一对多的情况下用冬眠冬

时间:2019-03-10 08:01:08

标签: java spring hibernate jpa

我有一个查询,可在2个日期之前对实体进行排序:

@Query(value = "from Order order by CASE WHEN created > updated THEN created ELSE updated END desc")

我可以对@OrderBy注释中的@OneToMany进行同样的操作吗?

@OneToMany(cascade = CascadeType.ALL ,mappedBy = "order", fetch = FetchType.EAGER)
@OrderBy(...)
private List<Dish> dishes = new ArrayList<>();

与接受所有订单然后遍历所有订单并通过查询为每个菜肴查找菜相比,这还可能花费更少的时间和性能吗?

2 个答案:

答案 0 :(得分:0)

Hibernate支持@OrderBy批注,您可以将其添加到关系属性,如以下代码段所示。

@OrderBy(value = "CASE DESC")

答案 1 :(得分:0)

尝试使用org.hibernate.annotations.OrderBy代替javax.persistence.OrderBy

org.hibernate.annotations.OrderBy的JavaDoc声明:

  

使用SQL排序(而非HQL排序)对集合进行排序。

     

与javax.persistence.OrderBy的不同之处在于这需要SQL   片段,JPA OrderBy需要一个有效的JPQL排序片段。

这意味着:

  • 您可以使用SQL函数
  • 您需要使用SQL列名而不是Java字段名