2012-10-22 53 views
0

我的LogEventType在我的對象數組中。有沒有使用其構造函數創建新的LogEventType的方法?這是可能的我LogEventType是一個映射的實體,但它不是。使用sql和常規插入創建表logeventtype。在這種情況下返回休眠行映射器

new LogEventType(obj[0],obj[1]); 

會很好,但我需要稍後獲取列表。

Session session = sessionFactory.getCurrentSession(); 
String queryString = "select type.eventid, type.value from logeventtype type where type.eventid = :eventid"; 
Query query = session.createSQLQuery(queryString).setParameter("eventid", enventId); 
Object[] obj = (Object[]) query.uniqueResult(); 

編輯: 這是我一直在努力

Session session = sessionFactory.getCurrentSession(); 
String queryString = "select new com.company.Test(type.value) from logeventtype type where type.eventid = :eventid"; 
Query query = session.createQuery(queryString).setParameter("eventid", 1l); 
Object[] obj = (Object[]) query.uniqueResult(); 

我得到logeventtype沒有映射。

+1

我讀的問題3次,老實說,我還沒有得到你想要問什麼要這樣做...... –

+0

我能得到直接LogEventType從我的查詢? LogEventType不是由hibernate管理的。 – pethel

+1

但你說你爲LogEventType創建了表。我認爲如果你能讓問題更清楚,讓人們更好地理解你的問題,那會更好。順便說一下,你可以從SomeX中選擇新的SomeClass(x.fieldA,x.fieldB),其中x.foo =「balbalbla」;'在HQL中。我不知道它是否與你的問題有關,雖然 –

回答

0

我可以

Query query = sessionFactory.getCurrentSession().createSQLQuery("select * from logeventtype ").addScalar("eventId", StandardBasicTypes.LONG) 
      .addScalar("value", StandardBasicTypes.STRING).setResultTransformer(Transformers.aliasToBean(LogEventType.class));