java - OneToMany 只返回特定的行
问题描述
我有带属性的课程
@Entity
public class Energy() {
@Id
private long id;
private Date date;
@OneToMany(fetch = FetchType.LAZY)
private List<Value> values;
}
和价值类有
private String obis;
private long value;
仅返回 obis 包含特定值的列表值元素的最快方法是什么?
谢谢!
解决方案
这取决于您选择的实现,例如使用 Criteria Api:
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Energy> cq = cb.createQuery(Energy.class);
Root<Energy> root = cq.from(Energy.class);
Join<Energy,Value> join = root.join(Energy_.values);
//If you dont use metamodel change by root.join("values")
cq.select(root);
cq.where(cb.equal(join.get(Value_.value),VALUE));
//If you dont use metamodel change by join.get("value")
List<Energy> result = entityManager.createQuery(cq).getResultList();
推荐阅读
- wordpress - 我开发的wordpress自己的主题是在帖子上显示符号如何修复它
- gracenote - 如何在我的项目中引用 Gracenote sdk?
- javascript - Amchart:如何选择周期范围?
- java - Eclipse Maven 项目:构建项目时出错
- python-3.x - 如何使用 Beautifulsoup4 检查父标签是否有名称不是“div”的直接子标签
- sql-server - 为什么 TRUNCATE 语句需要 ALTER 权限而不是 DELETE?
- android - Lottie 动画填充
- php - 将文件上传到 hostprovider:空页面
- windows - 无法加载数据集。基本上代码不是从 Windows 中的特定位置读取 csv 文件
- python - 从 dict 数据创建烧瓶动态表单