2017-01-24 7 views
0

私は遅延読み込みエンティティユーザーとしてテーブルメンバーを持っています。遅延ロードエンティティのプロパティに基づいてフィルタを適用する方法

Member User 
------ ---- 
id  id 
User  name 

DetachedCriteria dc = DetachedCriteria.forClass(Member.class, "m"); 
dc.setFetchMode("user",FetchMode.JOIN); 
dc.add(Restrictions.like("user.name", "alpha", MatchMode.ANYWHERE)); 
Criteria criteria = dc.getExecutableCriteria(session.getSession()); 
List<Membership> list = criteria.list(); 

ハイバネート例外をスローすると、メンバーテーブルのuser.nameプロパティを解決できません。

遅延読み込み関連エンティティのプロパティの制限を使用するにはどうすればよいですか?

答えて

1

ユーザーのプロパティにアクセスするには別名を作成する必要があります。これを有効にするには、次のように変更してください。

DetachedCriteria dc = DetachedCriteria.forClass(Member.class, "m"); 
dc.createAlias("user", "u"); 
dc.add(Restrictions.like("u.name", "alpha", MatchMode.ANYWHERE)); 
Criteria criteria = dc.getExecutableCriteria(session.getSession()); 
List<Membership> list = criteria.list(); 
関連する問題