如果查询是自定义的,返回List的对象参数是什么?

时间:2016-11-30 07:55:03

标签: spring hibernate spring-mvc

通常,如果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 个答案:

答案 0 :(得分:1)

您将获得ListObject[]

Object[]中的顺序将与select语句中的列顺序匹配。

意味着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);

自定义休眠使用的特定类型

一些例子:

"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 [](可能与第一列无关)。