Hibernate @OrderBy引用了类

时间:2009-06-24 07:33:46

标签: oracle hibernate annotations

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

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "COLUMN_NAME")    
private List<ClassB> lotsOfClasses;

“ClassB”使用普通的旧映射注释来映射类“ClassC”:

public class ClassB {
...
  @ManyToOne
  @JoinColumn(name="AD_POINT_ID")
  private ClassC classC;
...
}

如何将ClassO的集合中的@OrderBy批注添加到ClassB,以便按ClassC的“name”属性对集合进行排序

像这样:

@OrderBy(clause="classC.name asc")

我得到的只是甲骨文的例外情况,说classC是未知的。

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

P.S。我还应该提到在集合上使用OrderBy注释,如下所示:     @OrderBy(clause =“classC asc”) (即没有classC上的.name)我得到一个有效的SQL语句,它使用classC的ID列(主键)来排序。

干杯, 标记

4 个答案:

答案 0 :(得分:7)

遗憾的是,不可能做你想做的事。我已经回答了类似的问题here

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

答案 1 :(得分:3)

使用@Sort代替自定义比较器

答案 2 :(得分:1)

如果您使用JPA,则可以这样做。请参阅此article

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

答案 3 :(得分:-1)

我只知道NHibernate(.NET版本),但我想它应该类似:

@OrderBy(clause = "name asc")  

或者你可以试试这个:

@OrderBy("name")