hibernate error:
org.hibernate.QueryException: could not resolve property: licenseInfo.name of: com.db.User
数据结构:
User 和 LicenseInfo 关联;
class User{
private LicenseInfoPO licenseInfo;
}
hql:
Criteria query = HibernateUtil.getSession().createCriteria(User.class);
query.add(Restrictions.eq("licenseInfo.name", a));
query.add(Restrictions.eq("licenseInfo.id
", a)
);
问题原因:
Restrictions.eq("Objecta.name", a)报错,而 Restrictions.eq("Objecta.id“,a)正确,前提是id为主键,name为非主键。也就是说Object后边点出的属性必须是主键,否则会报错。这可能是hibernate的漏洞,或者说他的功能还没完善。
解决办法:
query.createAlias("licenseInfo", "license");
query.add(Restrictions.eq("license.name ", a));
query.add(Restrictions.eq("license.name ", a));