获取整个树的JPA查询

Jav*_*avi 8 java persistence hibernate jpa

我有一个模拟所有类别的类,它们可以按层次排序.

@Entity
@Table(name="categories")
public class Category {
    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="sequence")
    @SequenceGenerator(name="sequence", sequenceName="categories_pk_seq", allocationSize=1)
    @Column(name="id")
    private Long id;

    @Column
    private String name;

    @OneToOne
    @JoinColumn(name="idfather")
    private Category father;

}
Run Code Online (Sandbox Code Playgroud)

我需要按层次顺序排列所有类别(我的意思是每个父亲后跟其子级和父级按字母顺序在每个级别上排序),因为它们可以在例如Oracle中的PRIOR中制作.是否可以使用JPA查询(而不是SQL查询)执行此操作?

谢谢.

Gar*_*vis 8

简短的回答是; 没有标准的方法可以做到这一点.

你必须使用本机sql.

您可以扩展Oracle Hibernate Dialect并添加一些用户函数/扩展以使hibernate生成PRIOR或CONNECT BY子句,但这会阻止您的应用程序严格JPA和数据库独立.