獲取異常,而使用標準API使用標準的API中取出兩個物體
org.hibernate.QueryException: could not resolve property: com of: com.data.Collage at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:44)
at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:38)
at org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:1362)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getPathEntityName(CriteriaQueryTranslator.java:204)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.createCriteriaEntityNameMap(CriteriaQueryTranslator.java:191)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.<init>(CriteriaQueryTranslator.java:81)
at org.hibernate.loader.criteria.CriteriaLoader.<init>(CriteriaLoader.java:58)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1550)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
有類定義運行HQL查詢的性能如下
class Collage {
int id;
String collageName;
List lstStudent;
}
class Student{
String studentName;
int id;
}
已經做了上述類映射。
現在我正嘗試在單個查詢中獲取拼貼名稱和學生姓名,其中包含collageID和StudentID。爲此使用了Criteria API。
Criteria cr = session.createCriteria("com.data.Collage","collageAlias");
cr.createAlias("com.data.Student","studentAlias");
cr.add(Restrictions.eq("collageAlias.id", "402882c2369bc53901369bc95d5f0137"));
cr.add(Restrictions.eq("studentAlias.id","ff80808134cbe5a10134d14ff20300a9"));
ProjectionList properties = Projections.projectionList();
properties.add(Projections.property("collageAlias.collageName"));
properties.add(Projections.property("studentAlias.studentName"));
cr.setProjection(properties);
List collage_student = cr.list();
我試着用Collage.class,爲拼貼刪除別名,作爲t的標準API的默認類,但它沒有奏效。
有什麼建議嗎?
只是一個想法,因爲你的領域是包私有,他們可能無法訪問到您的其他代碼(如果它不是在相同的包裝)。嘗試將它們公開或添加,併爲它們添加getter和setter。 –