下面是我的服务实现方法:
@Override
public List<Question> getQuestion(Long questionId, int page, int records, String organizationId) throws InvalidIdException {
Organization existingOrganization=organizationRepository.findOne(siteUtil.getDecryptedId(organizationId));
Pageable pageInfo=new PageRequest(page-1,records);
Page<com.oAssessment.entity.Question> existingQuestions=questionRepository.findAllByOrganizationAndDeleted
(existingOrganization,false,pageInfo);
List<Question> existingQuestion = new ArrayList<>();
if(existingQuestions.hasContent()) {
Iterator<com.oAssessment.entity.Question> existingQustionIterator = existingQuestions.iterator();
while(existingQustionIterator.hasNext()) {
com.oAssessment.entity.Question newQuestion = existingQustionIterator.next();
Question question = new Question();
if(newQuestion.getPkQuestionId()!=null) {
question.setSerialNo(newQuestion.getSerialNo());
question.setQuestionText(newQuestion.getText());
question.setDifLevel(newQuestion.getDifLevel());
question.setTypeOfquestion(newQuestion.getTypeOfQuestion());
existingQuestion.add(question);
}
}
}
return existingQuestion;
}
jpa存储库应该是这样的
@Repository
public interface QuestionRepository extends JpaRepository<Question, Long> {
Page<Question> findAllByOrganizationAndDeleted(Organization existingOrganization, boolean b, Pageable pageInfo);
}
这样,所有的数据都来自数据库。但我只想设置一些条件来过滤掉数据。就像我想从数据库中获取一些关于给定主题的问题,没有问题,问题的难度级别是这样的。但是这些数据应该是随机的。请帮帮我。
1条答案
按热度按时间q35jwt9p1#
如果你想过滤掉你的数据
Spring Data
,您可以使用Specifications
,Query by Example
以及Querydsl Extension
我建议你去Specifications
因为我觉得它更强大。你可以看看Spring Data JPA - Reference Documentation
更多信息。对于随机排序数据,我认为你不可能做到这一点
Spring Data
因为不是所有的数据库都有这个功能。你先找出你过滤过的问题的总数,然后随机查询一页怎么样?