Как вы заказываете таблицу соединений oneToMany по критериям гибернации? - PullRequest
35 голосов
/ 06 апреля 2011

Скажем, у меня есть класс Mother с отображением oneToMany для котят

@Entity
@org.hibernate.annotations.Entity(dynamicUpdate = true)
@Table(name = "Mother")

.....

@OneToMany(fetch = FetchType.LAZY, targetEntity=Kittens.class, cascade=CascadeType.ALL)
@JoinColumn(name="motherId")
private List<Kittens> kittens;

Я использую критерии Api для предоставления списка

Criteria criteria = this.getSession().createCriteria(Mother.class);
Criterion MotherType = Restrictions.eq("type", "domesticated");
criteria.add(MotherType)
.addOrder(Order.asc("motherName"))
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
.setFetchMode("kittens", FetchMode.JOIN)
// .addOrder(Order.asc("kittens.kittenName"));
List test = criteria.list();

Работает нормально, пока не попытаюсь добавитьпорядок поля котят kittenName

Я также пытался добавить аннотацию @OrderBy (value = "kittenName") под Kitten @OneToMany (... и т. д.), которая работает нормально, пока вы не используете API критериеви этот порядок будет предшествовать любым другим инструкциям заказа в sql.

Приветствует заранее за любую помощь ...

1 Ответ

69 голосов
/ 06 апреля 2011

Вам необходимо добавить аннотацию @javax.persistence.OrderBy в свой список kittens.

@OneToMany(fetch = FetchType.LAZY,
           targetEntity=Kittens.class,
           cascade=CascadeType.ALL)
@JoinColumn(name="motherId")
@OrderBy("kittenName")
private List<Kittens> kittens;

@ См.

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