我有这个实体:

public class AnswerEntity {
    @ManyToOne
    private UserEntity user;
    @ManyToOne
    private AnswerDirectoryEntity answer;
    @ManyToOne
    private QuestionEntity question;
}


public class QuestionEntity {
    @ManyToOne
    private QuestionnaireEntity questionnaire;
}


public class QuestionnaireEntity  {
    private String code;
}


我需要通过user ID以及code中相应的QuestionnaireEntity来获取所有用户答案。

我通过创建这样的查询来做到这一点:

List<AnswerEntity> answerList = answerRepository.findAllByUserId(userId);


并使用equals遍历列表中的每个对象,然后将每个对象与问卷代码进行比较:

for(AnswerEntity answerEntity : answerList){
            if(answerEntity.getQuestion().getQuestionnaire().getCode().equals(questionnaireId)){
     ///
}


但是该解决方案非常慢,因为它必须迭代数据库中的每个对象,

有人可以告诉我如何在我的存储库中创建一个对我有帮助的query吗?

最佳答案

您可以通过这种方式在存储库中使用JPA方法查询

List<AnswerEntity> findByUserIdAndQuestionQuestionnaireCode(Integer userId, String code);

08-17 11:26