JPA 1.0 @OrderBy 使用字段名与 JPA 2.0 @OrderColumn 使用列名

Kaw*_*awu 5 jpa sql-order-by jpa-2.0

根据 Java EE 6 文档,JPA 1.0在声明注释时@OrderBy使用字段名称,而 JPA 2.0@OrderColumn使用列名称。看这里:

http://docs.oracle.com/javaee/6/api/javax/persistence/OrderBy.html

http://docs.oracle.com/javaee/6/api/javax/persistence/OrderColumn.html

前者自 JPA 1.0 起可用,后者是随 JPA 2.0 添加的。如果您阅读文档片刻,就会清楚@OrderBy使用字段/属性来指定顺序,而@OrderColumn使用 SQL/DDL 列名。

为什么会变成这样?对我来说,这看起来很不一致。

为什么事情会这样?它是 JPA 1.0 的遗物吗?

Dat*_*eus 2

尝试了解有序列表(JPA1、JPA2)和索引列表(JPA2)之间的区别。一个按条件对元素进行排序,另一个保留它们插入的位置。它们满足不同的用例。OrderColumn 允许指定列名称以用于模式生成目的。OrderBy 提供了用于检索目的的查询机制。因此,注释和 XML 允许输入的内容是不同的。

  • 那里没有矛盾。OrderColumn 允许用户指定数据存储中代理索引列的列名,就像 Column 允许用户设置字段持久化的列名(即模式信息)一样。OrderBy 是一种查询机制,因此使用字段名称,就像 JPQL 一样 (2认同)