如何根据“多”方的字段正确获取OneToMany关系中的值?

时间:2018-05-10 01:46:52

标签: java sql hibernate jpa jpql

假设我有一个实体

  

餐厅

带字段:

 @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)")

但是当我尝试执行此查询时,我遇到了“格式错误的数字常量”异常。能否请您解释一下,如何在我的情况下正确获取价值?谢谢!

1 个答案:

答案 0 :(得分:0)

从Restaurant r JOIN r.menu m中选择r,其中m.dateCreated =:dateCreated和r.id =:restaurantId

试试这个......这样可行......不需要使用内部查询