2016-04-05 1 views
0

私は春データJPA + PostgreSQLの使用していると私は、PostgreSQL ltreeは型を実装し、このようになります実体「カテゴリー」があります。私は、指定されたノードから」へのサブツリー全体をロードする際に私の問題があるSpringデータJPA + Hibernate + Postgresql LTree。 1つのクエリで指定されたノードによってサブツリー全体をロードすることは可能ですか?

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

をリーフ "ノードHibernateは親と子の各ペアに対して2つの追加選択を発行します。

このHibernateの動作を変更するにはどうすればよいですか?

答えて

0

Hibernateのオーバーヘッドを最小限に抑えたい場合は、カスタム@NamedNativeQueryをエンティティに定義するか、またはcreateNativeQuery(sqlString, Category.class)を直接使用してください。 ORMは便利ですが、複雑なクエリ/テーブル構造ではあまり効果的ではありません。

関連する問題