Oracle Hibernate@OrderBy和引用的类
我有一个班级说:“ClassA”有一个“ClassB”的集合 如何将@OrderBy注释添加到ClassB的ClassA集合中,以便集合按ClassC的“name”属性排序 像这样: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
@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")