java - 获取整棵树的 JPA 查询

标签 java hibernate jpa persistence

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

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

}

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

谢谢。

最佳答案

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

你必须使用原生 sql。

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

关于java - 获取整棵树的 JPA 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2598588/

相关文章:

java - 如何选择条件等于 null 的位置。

java - 将 Stripersist 与测试数据库结合使用

java - EntityManager 注入(inject)导致 NullPointerException

java - 如何创建 spring 参数化事务测试

java - Kafka流加入

java - 如何使用扫描仪读取回车符作为字符串的一部分?

java - 我的查询在带有索引的 hibernate 中花费了太多时间

java - 如何克服未发现转换器错误

java - 通过 joinColumn 查询 EntityManager

java - JSP 表达式语言错误