Hibernate @OrderBy с указанным классом - PullRequest
6 голосов
/ 24 июня 2009

У меня есть класс, говорящий: "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;
...
}

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

Вот так:

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

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

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

P.S. Я должен также упомянуть, что используя аннотацию OrderBy для коллекции, вот так: @OrderBy (clause = "classC asc") (т.е. без .name в classC) я получаю действительный оператор SQL, который использует столбец ID (первичный ключ) класса C для упорядочения по.

Ура, Mark

Ответы [ 4 ]

7 голосов
/ 14 июля 2009

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

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

3 голосов
/ 10 марта 2012

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

1 голос
/ 09 августа 2010

Это возможно, если вы используете JPA. Смотрите эту статью .

Затем вы просто добавляете @OrderBy("name") к свойству коллекции

0 голосов
/ 24 июня 2009

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

@OrderBy(clause = "name asc")  

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

@OrderBy("name")  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...