我有一个模拟所有类别的类,它们可以按层次排序。
@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/