通常,如果query
基于简单实体,则返回的List
为List<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
的论点是什么?
答案 0 :(得分:1)
您将获得List
个Object[]
Object[]
中的顺序将与select语句中的列顺序匹配。
意味着list.get(0)[0]
将是第一行的tr.trc_id
,list.get(0)[1]
将是第一行的DATE_FORMAT(tr.trc_date, '%d-%m-%Y')
,等等......
您可以使用sqlQuery.addScalar(columnAlias, Type);
或sqlQuery.addEntity(tableAlias, entityName);
一些例子:
"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
,因此您将在每个单元格中获得一个带有String
的Object [](可能与第一列无关)。