如何根据 "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
试试这个...这会起作用...不需要使用内部查询
假设我有一个实体
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
试试这个...这会起作用...不需要使用内部查询