根据 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 的遗物吗?
最佳答案
尝试了解有序列表(JPA1、JPA2)和索引列表(JPA2)之间的区别。一个按条件对元素进行排序,另一个保留它们插入的位置。它们满足不同的用例。 OrderColumn 允许指定列名称以用于模式生成目的。 OrderBy 提供了用于检索目的的查询机制。因此注释和XML允许输入的内容是不同的。
关于JPA 1.0 @OrderBy 使用字段名称与 JPA 2.0 @OrderColumn 使用列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10295923/