java - 如何从 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
对应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);
推荐阅读
- wpf - WPF - 将复选框与数据网格列对齐
- javascript - React - 单击父项时如何在子项上设置状态
- angular - 订阅主题什么都不做
- c# - C# 正则表达式:查找多个模式的所有匹配项
- r - dplyr 改变管道函数中的列名
- python - 带有复选框删除选项的 Python Django 表
- r - 逐步逻辑回归仅导致 RStudio 中的截距
- sitecore-exm - Sitecore 9 forms - 从表单中获取输入,然后将该信息放入 exm 电子邮件模板
- python - Python:字典中的多个值键对键/值
- javascript - 输入空格字符串时,ASP.NET Datepicker 验证无法触发