2016-11-30 49 views
0

一般而言,如果query基於簡單的實體,則返回的ListList<ClassNameOfEntity>。但現在我正在執行此查詢:如果查詢是自定義的,那麼返回列表的對象參數是什麼?

SELECT tr.trc_id AS id, 
DATE_FORMAT(tr.trc_date, '%d-%m-%Y') AS date_, 
DATE_FORMAT(tr.trc_date, '%H:%i:%s') AS heure, 
tr.trc_action AS details, 
CONCAT(IF(u.user_prenom IS NOT NULL, u.user_prenom, '') , ' ', u.user_name) AS noms, 
m.menu_action AS action 

FROM trace_acces tr 
INNER JOIN utilisateur u ON u.user_id = tr.user_id 
INNER JOIN menu m ON m.menu_code = tr.menu_code 

已經爲此查詢中涉及的每個數據庫表定義了實體。那麼在這種情況下List的論點是什麼?

回答

1

你會得到Object[]

Object[]順序將匹配在SELECT語句中的列順序的List

這意味着list.get(0)[0]將是第一排的tr.trc_idlist.get(0)[1]將是第一排的DATE_FORMAT(tr.trc_date, '%d-%m-%Y'),等...

您可以通過使用sqlQuery.addScalar(columnAlias, Type);sqlQuery.addEntity(tableAlias, entityName);

定製Hibernate使用的特定類型一些例子:

"select {r.*}, {t.*}, u.id as u_id from table1 r, table2 t, table3 u ..." 
query.addEntity("r", REntityName); // -> row[0] 
query.addEntity("t", TEntityName); // -> row[1] 
query.addScalar("u_id", Hibernate.LONG); // -> row[2] 
// (or StandardBasicTypes.LONG in latest hibernate versions) 

在你的具體情況,似乎列是String所以你會得到一個Ob在每個單元中有String的ject [](除了第一列以外)。

相關問題