2016-11-10 6 views
0

クラスが定義されています。エンティティの子プロパティのHibernate criteria.setFetchMode(property、mode)が機能しません。

@Entity 

@Table(name = "atg", uniqueConstraints = @UniqueConstraint(columnNames = "code")) 
public class ATG{ 

    @JsonInclude(JsonInclude.Include.NON_EMPTY) 
    @ManyToOne(fetch = FetchType.LAZY) 
    @JoinColumn(name = "companyid") 
    Manufacturer manufacturer; 
.. 
} 

メーカーでATGエンティティを取得しようとすると、次のように設定されます。

criteria.setFetchMode("manufacturer", FetchMode.JOIN); 

これが機能しています。私はメーカーの詳細を取得することを意味します。

私はメーカークラスを次のように定義しています。

@Entity 
public class Manufacturer{ 

@OneToMany(mappedBy="manufacturer") 
private List<Site> sites; 

} 

サイトオブジェクトもフェッチしたいです。だから、私は好きだった

criteria.setFetchMode("manufacturer.sites", FetchMode.JOIN); 

しかし、これは動作しません。つまり、私はサイトリストを取得できませんでした。

この場合、FetchMode.Joinはどのように使用しますか?

答えて

0

条件にcreateAlias()を配置できます。サンプルを参照

criteria.createAlias("manufacturer.sites","site",CriteriaSPecification.LEFT_JOIN); 

criteria.setFetchMode("site", FetchMode.JOIN); 
+0

いいえ動作しません。リストを取得できないようです。 – Ratha

+0

私はこれをhibernate forum https://forum.hibernate.org/viewtopic.php?f=1&t=1043773に掲載しました。私は両方が関連していると思う – Ratha

関連する問題