Sql 如何基于惰性加载实体的属性进行筛选

Sql 如何基于惰性加载实体的属性进行筛选,sql,hibernate,hql,Sql,Hibernate,Hql,我有一个作为延迟加载实体用户的表成员 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))

我有一个作为延迟加载实体用户的表成员

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();
它引发hibernate异常,无法解析成员表中的属性user.name


如何使用延迟加载关联实体的属性限制?

您需要创建别名来访问用户的属性。更改为以下内容以使其正常工作:

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();