java - 一对多的订单与 case hibernate spring
问题描述
我有一个查询,按 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<>();
与接受所有订单然后循环遍历它们并通过查询为每个订单查找菜肴相比,这可能会花费更少的时间和性能吗?
解决方案
尝试使用org.hibernate.annotations.OrderBy
而不是javax.persistence.OrderBy
声明的 JavaDoc org.hibernate.annotations.OrderBy
:
使用 SQL 排序(不是 HQL 排序)对集合进行排序。
与 javax.persistence.OrderBy 不同之处在于它需要 SQL 片段,JPA OrderBy 需要一个有效的 JPQL order-by 片段。
这个意思:
- 您可以使用 SQL 函数
- 您需要使用 SQL 列名而不是 Java 字段名
推荐阅读
- java - 为列表视图组件创建描述的更有效方法?
- python - Python For loop to update a data frame
- excel - 在从组合框中选择项目的模式下显示两个值(列)-VBA
- ocaml - Find the product of the digits of a number
- c - Why my code is not printing the sorted array?
- php - PHP CURL:输入错误发布图像和一些数据的意外结束
- django - Django REST JSONWebTokenAuthentication + Angular(未提供授权细节)
- python - 如何从列表中仅获取不同的值?
- python - Create a new log thread or use a daemon thread?
- python - 子元素python elementtree中的变量