假设我有一个实体
餐厅
带字段:
@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)")
但是当我尝试执行此查询时,我遇到了“格式错误的数字常量”异常。能否请您解释一下,如何在我的情况下正确获取价值?谢谢!
答案 0 :(得分:0)
从Restaurant r JOIN r.menu m中选择r,其中m.dateCreated =:dateCreated和r.id =:restaurantId
试试这个......这样可行......不需要使用内部查询