0
我试图使用连接表来完成即席查询,使用Restrictions.or和Restrictions.ilikeHibernate的标准,连接还是
我的实体样子:
@Entity
@Table(name="CASE_REVIEW")
public class CaseReview {
@Id
@Column(name = "REVIEW_ID", unique = true, nullable = false, length = 19)
private Long reviewId;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "CASE_ID", nullable = false)
private Case reviewCase;
}
@Entity
@Table(name = "CASE")
public class Case {
@Id
@Column(name = "ID", unique = true, nullable = false, length = 19)
private Long id;
@OneToOne(fetch=FetchType.EAGER)
@JoinColumn(name="STUDENT_ID" , referencedColumnName="ID",
private StudentInformation studentInformation;
}
@Entity
@Table(name="STUDENT")
public class StudentInformation {
@Id
@Column(name="ID")
private Long id;
@Column(name="LAST_NAME")
private String lastName;
@Column(name="FIRST_NAME")
private String firstName;
}
我的代码做类似如下:
Criteria c = session.createCriteria(CaseReview.class);
c.createAlias("reviewCase" , "reviewCase");
c.createAlias("reviewCase.studentInformation" , "reviewCasestudentInformation");
c.add(Restrictions.or(Restrictions.ilike("reviewCasestudentInformation.lastName" , "%e%"), Restrictions.ilike("reviewCasestudentInformation.firstName" , "%e")));
我越来越org.hibernate.QueryException:无法解析属性:CaseReview:中reviewCasestudentInformation。我也尝试创建多层别名:
c.createAlias("reviewCase.studentInformation" , "reviewCaseStudentInformation");
并在restriction.or中使用它并获得相同的结果。奇怪的是,任何一套别名都可以正常工作。
Order.asc("reviewCaseStudentInformation.lastName")
茫然无措。建议?