一尘不染

JPA查询以获取整棵树

hibernate

我有一个可以对所有类别进行建模的类,可以对它们进行分层排序。

@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;

}

我需要按等级对所有类别进行排序(我的意思是每个父亲都跟随其子级,而父亲在每个级别上按字母顺序排序),例如可以使用oracle中的PRIOR进行分类。是否可以使用JPA查询(而非SQL查询)来执行此操作?

谢谢。


阅读 551

收藏
2020-06-20

共1个答案

一尘不染

简短的答案是:没有,没有标准的方法可以做到这一点。

您必须使用本机sql。

您可能可以扩展Oracle Hibernate方言并添加一些用户功能/扩展名,以使hibernate生成PRIOR或CONNECT
BY子句,但这将阻止您的应用程序严格依赖JPA和数据库。

2020-06-20