这是一个非常令人头疼的问题。但是我要问。
我们如何建立休眠的复杂标准?
我写了两个简单的类,一个类引用了另一个。
这是我的课
public class CourseEntity extends BaseEntity {
@OneToOne
private CourseTypeEntity type;
@OneToOne
private CompanyEntity company;
}
和
public class CourseTypeEntity {
@Column
private String code;
@Column
private String name;
}
并试图建立类似这样的标准。
crit = session.createCriteria(CourseEntity.class, "c");
crit.add(Restrictions.eq("c.id", 1l));
crit.add(Restrictions.eq("c.type.id", 1l));
crit.add(Restrictions.eq("c.company.id", 1l));
crit.add(Restrictions.like("c.company.name", "oracle"));
是获取company.name过滤器的正确方法,每当添加最后一行时,它都会引发异常。
有人可以帮助解决此问题或其他替代方法来解决此问题吗?
谢谢
最佳答案
尝试添加别名:
crit = session.createCriteria(CourseEntity.class, "c").createAlias("c.company", "company");
crit.add(Restrictions.eq("c.id", 1l));
crit.add(Restrictions.eq("c.type.id", 1l));
crit.add(Restrictions.eq("company.id", 1l));
crit.add(Restrictions.like("company.name", "oracle"));