Oracle Hibernate@OrderBy和引用的类

Oracle Hibernate@OrderBy和引用的类,oracle,hibernate,annotations,Oracle,Hibernate,Annotations,我有一个班级说:“ClassA”有一个“ClassB”的集合 如何将@OrderBy注释添加到ClassB的ClassA集合中,以便集合按ClassC的“name”属性排序 像这样: @OrderBy(clause="classC.name asc") 我得到的只是Oracle的异常,说classC是未知的 这里的任何帮助都会很棒,因为它现在真的让我心烦 另外,我还应该提到在集合上使用OrderBy注释,如下所示: @订购人(条款=“classC asc”) (即,在classC上没有.nam

我有一个班级说:“ClassA”有一个“ClassB”的集合

如何将@OrderBy注释添加到ClassB的ClassA集合中,以便集合按ClassC的“name”属性排序

像这样:

@OrderBy(clause="classC.name asc")
我得到的只是Oracle的异常,说classC是未知的

这里的任何帮助都会很棒,因为它现在真的让我心烦

另外,我还应该提到在集合上使用OrderBy注释,如下所示: @订购人(条款=“classC asc”) (即,在classC上没有.name)我得到一个有效的SQL语句,它使用classC的ID列(主键)进行排序

干杯, Mark

我只知道NHibernate(.NET版本),但我想它应该也能起到类似的作用:

@OrderBy(clause = "name asc")  
或者您可以尝试以下方法:

@OrderBy("name")  

不幸的是,要做你想做的事是不可能的。我已经回答了一个类似的问题


@OrderBy
仅支持集合元素的直接属性。

如果使用JPA,这是可能的。看这个


然后您只需将
@OrderBy(“name”)
添加到集合属性

使用带有自定义比较器的
@Sort

但这将是ClassB的“name”属性,我需要JiříVypědřík建议的ClassCA的name属性,您可以实现java.util.comparator接口。在实现的compare方法中,您可以实现引用Hibernate映射对象的逻辑,并相应地返回int值。但是,这将不会在Oracle DB上使用排序,而是在内存(JVM)中使用排序。
@OrderBy(clause = "name asc")  
@OrderBy("name")