JPA orderBy需要注释帮助

时间:2014-05-13 05:50:22

标签: java hibernate jpa

我正在尝试使用注释和顺序的类似查询未在输出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;
}

2 个答案:

答案 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是排序列表,前提是孙子必须是列表而不是单个对象。