我正在尝试使用注释和顺序的类似查询未在输出sql中显示;任何建议将不胜感激。
Select * from Parent p, Child c, GrandChild gc WHERE id=? and
p.id=c.parentID and c.code = gc.code order by gc.code,gc.seqNum
这是我的Java类:
Public class Parent {
int id;
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "parent")
@NotEmpty
List<Child> listChidrean;
}
Public class Child{
int parentID;
String code;
String childName;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "Code", referencedColumnName = "Code")
@OrderBy("code,seqNum")
GrandChild grandChild;
}
Public class GrandChild {
String code;
String childName;
int seqNum;
}
答案 0 :(得分:2)
@OrderBy
用于多值属性,即用于列表。然后它指定该列表中的顺序。它不用于单值属性,例如 GrandChild 。
答案 1 :(得分:0)
OrderBy
定义
指定关联或集合为retrieved
时的集合值关联或元素集合的元素的排序。
这意味着对于您的示例,您应该有一个孙子列表,然后只有orderby应用如下
Parent parent = manager.find(Parent.class, id);
List<GrandChild> grandChildren = parent.listChidren[0].grandChild;
所以这里父节点不会有排序值,因为OrderBy
仅适用于后端,所以只有grandChildren是排序列表,前提是孙子必须是列表而不是单个对象。