Je suis en train d'accomplir des requêtes ad hoc en utilisant les tables jointes, en utilisant un Restrictions.or et Restrictions.ilikeCritères Hibernate, Rejoint, ou
Mes entités ressemblent:
@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;
}
Mon code fait quelque chose comme ce qui suit:
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")));
Je reçois org.hibernate.QueryException: ne pouvait pas résoudre la propriété: reviewCasestudentInformation de: CaseReview. J'ai également essayé de créer des alias à plusieurs niveaux:
c.createAlias("reviewCase.studentInformation" , "reviewCaseStudentInformation");
et en utilisant cela dans la restriction ou avec les mêmes résultats. Assez étrangement, l'ensemble des alias fonctionne bien pour
Order.asc("reviewCaseStudentInformation.lastName")
À peu près à perte. Suggestions?