-1
我需要從查詢中獲取數據,這將檢索實體A,實體B和實體C的樹ID自定義字段。這樣Hibernate將非託管實體與託管實體合併
SELECT
a.id_entityA,
b.id_entityB,
c.id_entityC,
sum(some) * sum(another),
avg(of_some) * any_factor,
another_operations,
From ... Many Selects, joins, etc
某事,這檢索像
54 | 80 | 60 | 5421 | 56474.4 | 4540
在休眠的信息,我創建的SQLQuery來獲取信息的DTO
public class ExampleDTO {
private Integer idA;
private Integer idB;
private Integer idC;
private Number fieldX;
private Number fieldY;
private Number fieldZ;
//getters and settters
}
在查詢執行我添加使用ResultTransformer
.setResultTransformer(Transformers.aliasToBean(ExampleDTO.class))
還有作品!!!
但是,我需要實體A,B和C的另一個領域,
public class ExampleDTO {
// bottom of fields
private EntityA entityA;
private EntityB entityB;
private EntityC entityC;
// news and olds getters and setters
所以我在bucle閱讀本填寫
for(ExampleDTO e : list)
{
e.setEntityA(entityADao.getById(e.getIdA());
e.setEntityB(entityBDao.getById(e.getIdB());
e.setEntityC(entityCDao.getById(e.getIdC());
}
作品,但其老式的低性能獲取數據的方式。
有得到在同一查詢三個實體部分神奇方式,只需要運行第一個查詢並做不 bluce來填補我的DTO
編輯列表 假設這EntityA
,EntityB
和EntityC
,都anoted與@Entity
如果我正確理解你要做的事情,你希望運行一個查詢來獲得三個實體,並且運行SQL命令來執行數學計算,所有這一切都在一次查詢中完成。上次我使用Hibernate時,我相信在HQL或Criteria/getById()中不可能執行任意SQL公式。也就是說,你必須選擇是否運行SQL,或者讓Hibernate執行它的ORM魔法,但是不能一次執行這兩個操作。但這可能不再準確...... – Tim