首页 > 解决方案 > 如何从 Spring/JPA/Hibernate 中的嵌套实体中获取对象?

问题描述

我有这个实体:

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对应codeQuestionnaireEntity

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

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

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

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

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

谁能告诉我如何query在我的存储库中创建一个可以帮助我的?

标签: javaspringhibernatespring-bootjpa

解决方案


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

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

推荐阅读