Hibernate @OrderBy с указанным классом

У меня есть класс, который говорит: "ClassA" который имеет коллекцию "ClassB";

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

& Quot; ClassB & Quot; имеет сопоставленный класс "ClassC" используя простые старые аннотации сопоставления:

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

Как добавить аннотацию @OrderBy в коллекцию ClassA в ClassB, чтобы эта коллекция упорядочивалась по «имени»? собственность ClassC

Вот так:

<code>@OrderBy(clause="classC.name asc")
</code>

Все, что я получаю, это исключения Oracle, говорящие о том, что classC неизвестен.

Любая помощь здесь была бы потрясающей, так как это действительно беспокоит меня в данный момент.

P.S. I should also mention that using the OrderBy annotation on the collection like this: @OrderBy(clause="classC asc") (i.e. without the .name on classC) I get a valid SQL statement, which uses the ID column (the primary key) of classC to order by.

Ура, отметка

 prageeth30 апр. 2013 г., 16:44
По предложению Ji & # x159; & # xED; Vyp & # x11B; d & # x159; & # xED; k вы можете реализовать интерфейс java.util.Comparator. В реализованном методе сравнения вы можете реализовать логику, чтобы без проблем ссылаться на объект Hibernate Mapped и соответственно возвращать значение int. Однако это не будет использовать порядок в базе данных Oracle, а сортировку в памяти (JVM).

Ответы на вопрос(4)

Решение Вопроса

К сожалению, невозможно делать то, что вы хотите. Я ответил на аналогичный вопросВот.

@OrderBy только поддерживаетdirect свойства элементов коллекции.

Это возможно, если вы используете JPA. Видеть этостатья.

Тогда вы просто добавляете@OrderBy("name") в собственность коллекции

использование@Sort вместо пользовательского компаратора

Я знаю только NHibernate (версия .NET), но я думаю, он должен работать аналогично:

@OrderBy(clause = "name asc")  

Или вы можете попробовать это:

@OrderBy("name")  
 Mark25 июн. 2009 г., 00:25
Но это было бы «имя»; свойство ClassB, мне нужно имя свойства ClassC

Ваш ответ на вопрос