如何根据 "many" 方的字段正确获取 OneToMany 关系中的值?

How to properly get values in OneToMany relationship based on field of "many" side?

假设我有一个实体

Restaurant

字段:

 @OneToMany(mappedBy = "restaurant", fetch = FetchType.LAZY)
 private Set<MenuEntry> menu;

MenuEntry 实体有下一个字段:

@Column(name = "date_time_created", nullable = false)
private LocalDate dateCreated;

这显然代表条目创建的日期。

我需要编写 JPQL 查询,它会给我 Restaurant 菜单集包含具有指定创建日期的条目。

我已经用下一个注释编写了方法:

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

但是当我尝试执行此查询时出现 "malformed numeric constant" 异常。你能解释一下,如何在我的情况下正确地获得价值吗?谢谢!

Select r 来自 Restaurant r JOIN r.menu m where m.dateCreated=:dateCreated and r.id=:restaurantId

试试这个...这会起作用...不需要使用内部查询