那麼問題標題說,我試圖做一個投影標準只查詢表的幾個屬性。休眠標準投影
所以我有一個Person Table /類,它有大約40個屬性。我希望我的標準來獲得屬性的動態數量,可以說,10,11或12(SQL方面select firstname, lastname from person
),我在做這樣的:
Transaction tx = session.beginTransaction();
Criteria crit = session.createCriteria(Person.class);
crit.setCacheable(true);
ProjectionList projList = Projections.projectionList();
projList.add(Projections.property("id"));
Criterias c = null;
for (int i = 0; i < checked.size(); i++) {
Attribute attr = checked.elementAt(i);
switch (attr) {
case LASTNAME:
projList.add(Projections.property("lastName"));
c = enumMap.get(attr);
if (c.isChanged()) {
String tmp = (String) c.getAnswer();
tmp = tmp.replace('*', '%');
crit.add(Restrictions.like("lastName", tmp));
crit.addOrder(Order.asc("lastName"));
}
case ...THE REST .....
}
crit.setProjection(projList);
retList = crit.list();
tx.commit();
return retList;
而且還給了retList
元素不是從Person.class
:
INFO [AWT-EventQueue的-0](UserGroupManagerApp.java127) - [Ljava.lang.Object; @ 14b9b80
致命[AWT-EventQueue的-0](Login.java78) - java.lang中.ClassCastException:[Ljava.lang.Object;無法轉換爲usergroupmanager.model.db.Person java.lang.ClassCastException:[Ljava.lang.Object;不能投到usergroupmanager.model.db.Person
請幫忙,現在我列出所有40+ attr,它佔用了查詢時間,我不喜歡它。我正在尋找替代解決方案,這將幫助我解決這個問題。我讀了約ResultTransformer
,但沒有找到如何使用它在我的情況。
什麼是retList的定義 – Mark 2010-09-11 13:29:30
List retList = null;在開始時,我測試了它與泛型現在列表 retList = null和相同的東西 –
Darwly
2010-09-11 13:33:44