假设我有一个母亲,她有一个toToMany映射到小猫
@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
的顺序我还尝试在Kitten @OneToMany(...等)下添加@OrderBy(value =“kittenName”)注释,该注释可以正常使用,直到您使用条件API,此顺序将在任何其他订单语句之前sql。
提前为任何帮助干杯......
答案 0 :(得分:68)
您需要将@javax.persistence.OrderBy
注释添加到kittens
列表中。
@OneToMany(fetch = FetchType.LAZY,
targetEntity=Kittens.class,
cascade=CascadeType.ALL)
@JoinColumn(name="motherId")
@OrderBy("kittenName")
private List<Kittens> kittens;
@See