我想問一下,我有可能創建查詢投影和多個級別的標準? 我有2模型類:複雜的休眠投影
@Entity
@Table(name = "person")
public class Person implements Serializable {
@Id
@GeneratedValue
private int personID;
private double valueDouble;
private int valueInt;
private String name;
@OneToOne(cascade = {CascadeType.ALL}, orphanRemoval = true)
@JoinColumn(name="wifeId")
private Wife wife;
/*
* Setter Getter
*/
}
@Entity
@Table(name = "wife")
public class Wife implements Serializable {
@Id
@GeneratedValue
@Column(name="wifeId")
private int id;
@Column(name="name")
private String name;
@Column(name="age")
private int age;
/*
* Setter Getter
*/
}
我的標準API:
ProjectionList projections = Projections.projectionList();
projections.add(Projections.property("this.personID"), "personID");
projections.add(Projections.property("this.wife"), "wife");
projections.add(Projections.property("this.wife.name"), "wife.name");
Criteria criteria = null;
criteria = getHandlerSession().createCriteria(Person.class);
criteria.createCriteria("wife", "wife", JoinType.LEFT.ordinal());
criterion = Restrictions.eq("wife.age", 19);
criteria.add(criterion);
criteria.setProjection(projections);
criteria.setResultTransformer(Transformers.aliasToBean(Person.class));
return criteria.list();
,我希望,我可以查詢人,與妻子屬性指定的標準,以及指定的返回結果集。 所以我用投影獲得指定的返回結果集
我想personID,名稱(人),姓名(妻子)將返回。我如何使用API,我更喜歡使用Hibernate Criteria API。
這一次,我用上面得到我預期的結果代碼,但它會拋出異常與錯誤消息: Exception in thread "main" org.hibernate.QueryException: could not resolve property: wife.name of: maladzan.model.Person
, 是否我Restrictions.eq("wife.age", 19);
是獲得具有妻子19她的年齡價值的人是否正確?
感謝
嗨薩米安多尼。我確實使用過你的AliasToBeanNestedResultTransformer創建嵌套對象,我把嵌套對象作爲嵌套對象,但是我有一個小問題。我打算只在嵌套對象中獲得特定字段,在父對象中只有幾個字段,但結果是父對象中的所有字段和嵌套對象中的所有字段作爲嵌套對象。我不知道你的自定義轉換器是否只能獲取特定的字段,是否可以只嵌套對象中的特定字段作爲嵌套對象? –
你有沒有解決這個問題? –
@JatinMalwal有什麼問題? –