java - 如何根据“多”方的字段正确获取 OneToMany 关系中的值?
问题描述
假设我有一个实体
餐厅
带字段:
@OneToMany(mappedBy = "restaurant", fetch = FetchType.LAZY) private Set<MenuEntry> menu;
MenuEntry 实体具有下一个字段:
@Column(name = "date_time_created", nullable = false) private LocalDate dateCreated;
这显然代表创建条目的日期。
我需要编写 JPQL 查询,它会给我餐厅,其中一组菜单包括具有指定 dateCreated 的条目。
我编写了带有下一个注释的方法:
@EntityGraph(attributePaths = {"menu"}, type = EntityGraph.EntityGraphType.LOAD) @Query("SELECT r FROM Restaurant r WHERE r.id=:restaurantId AND r.menu IN (SELECT m FROM MenuEntry m WHERE m.dateCreated=:dateCreated)")
但是当我尝试执行此查询时,我遇到了“格式错误的数字常量”异常。您能否解释一下,如何在我的情况下正确获取值?谢谢!
解决方案
从 Restaurant r JOIN r.menu m 中选择 r,其中 m.dateCreated=:dateCreated 和 r.id=:restaurantId
试试这个...这将工作...无需使用内部查询
推荐阅读
- html - WCAG 2.0 H44 - 当文本框使用占位符文本时如何添加标签
- python - 在 TensorFlow 或 PyTorch 中仅创建和训练指定的权重
- reactjs - Jest React Redux 测试
- javascript - 在 jquery 中使用 hasClass 未检测到内部类名
- oracle - Oracle SQL ORA-24344 使用触发器时编译错误成功
- javascript - 获得链接的价值?
- python - Pandas 改变数值数据:迭代行以对每一行中的数据进行分组,打包成一个列表,将列表转换为系列,然后作为列插入数据框
- node.js - 我想通过 npm 安装一些东西,但它说'错误'和'checkPermissions Missing'
- apache - 无法使用 vagrant 从主机解析 IP
- amazon-web-services - AWS RDS 无法设置启用删除保护的备份保留期