Java Spring数据JPA+;冬眠+;PostgrelTree。是否可以通过一个查询按给定节点加载整个子树?

Java Spring数据JPA+;冬眠+;PostgrelTree。是否可以通过一个查询按给定节点加载整个子树?,java,spring,hibernate,jpa,ltree,Java,Spring,Hibernate,Jpa,Ltree,我使用的是Spring数据JPA+Postgresql,实体“Category”实现了Postgresql LTree类型,如下所示: @Id @SequenceGenerator(name = "categories_id_seq", sequenceName = "categories_id_seq", allocationSize = 1) @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "categorie

我使用的是Spring数据JPA+Postgresql,实体“Category”实现了Postgresql LTree类型,如下所示:

@Id
@SequenceGenerator(name = "categories_id_seq", sequenceName =  "categories_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "categories_id_seq")
@Column(name = "id", updatable = false)
private Integer id;

@Column(name = "name")
private String name;

@Column(name = "title")
private String title;

@Column(name = "trail")
@Type(type = "ltree")
private String trail;

@Column(name = "layer")
private Integer layer;

@Column(name = "parent_id")
private Integer parentId;

@ManyToOne()
@Fetch(FetchMode.JOIN)
@JoinColumn(name = "parent_id", insertable = false, updatable = false)
private Category parent;

@OneToMany
@Fetch(FetchMode.JOIN)
@BatchSize(size = 20)
@JoinColumn(name = "parent_id", insertable = false, updatable = false)
private Set<Category> childrens;
@Id
@SequenceGenerator(name=“categories\u id\u seq”,sequenceName=“categories\u id\u seq”,allocationSize=1)
@GeneratedValue(策略=GenerationType.SEQUENCE,generator=“categories\u id\u seq”)
@列(name=“id”,updateable=false)
私有整数id;
@列(name=“name”)
私有字符串名称;
@列(name=“title”)
私有字符串标题;
@列(name=“trail”)
@类型(Type=“ltree”)
私人串径;
@列(name=“layer”)
私有整数层;
@列(name=“parent\u id”)
私有整数父ID;
@ManyToOne()
@Fetch(FetchMode.JOIN)
@JoinColumn(name=“parent\u id”,insertable=false,updateable=false)
私人类别家长;
@独身癖
@Fetch(FetchMode.JOIN)
@批量大小(大小=20)
@JoinColumn(name=“parent\u id”,insertable=false,updateable=false)
私人儿童;
我的问题是,当我想将整个子树从给定节点加载到“叶”节点时,Hibernate会为每对父节点和子节点发出2个额外的选择


如何更改此Hibernate行为?

如果要最小化Hibernate开销,为什么不在实体中定义自定义的
@NamedNativeQuery
,或者直接使用
createNativeQuery(sqlString,Category.class)
?ORM很有用,但对于复杂的查询/表结构,它们也不是很有效