根据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允许输入的内容不同。

10-07 19:52
查看更多