我有一个可以对所有类别进行建模的类,可以对它们进行分层排序。
@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查询)来执行此操作?
谢谢。
简短的答案是:没有,没有标准的方法可以做到这一点。
您必须使用本机sql。
您可能可以扩展Oracle Hibernate方言并添加一些用户功能/扩展名,以使hibernate生成PRIOR或CONNECT BY子句,但这将阻止您的应用程序严格依赖JPA和数据库。