arrays - Hibernate SQLQuery,如何获取数组和行对象?

标签 arrays hibernate postgresql collections row

hibernate 3.6 和 postgresql 9.1。 使用 SQLQuery 如何获取结果数组数据(长数组 - 助手,“文本,长,时间戳”行数组 - 帐户)?

    limit = 10000;
    final SQLQuery sqlQuery = getSession().createSQLQuery("SELECT id, name, ts, " +
            " array(SELECT assistant_id FROM user_assistant WHERE p_id=pr.id ORDER BY assistant_id) AS accounts," +
            " array(SELECT row(type,uid,ts) FROM user_account WHERE p_id=pr.id ORDER BY type) AS accs," +
            " FROM profile pr WHERE ts > ? ORDER BY ts LIMIT " + limit);

大多数 DAO 函数是用 hibernate 实体和注释编写的。 但对于一些统计任务来说,使用 HQL 甚至 SQL 更容易。 与在 hibernateSQL 中使用数组的纯 JDBC 不同,使用数组不是那么直观。

JDBC 可能是一个解决方案,但我还没有找到任何方法从 Hibernate Session 或 Connection 获取 JDBC Statement。 ResultTransformer 也没有帮助,失败:

    org.hibernate.MappingException: No Dialect mapping for JDBC type: 2003

最佳答案

通过引用这个

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querysql.html

你可以做什么;

session.createSQLQuery("Your custom query")
 .addScalar("field1", Hibernate.STRING)
 .addScalar("field2", Hibernate.STRING)
 .addScalar("field3", Hibernate.STRING)

然后

 for(Object rows : query.list()){
    Object[] row = (Object[]) rows;
    String field1 = row[0] // contains field1
    String field2 = row[1]
    ..
    ..
 }

关于arrays - Hibernate SQLQuery,如何获取数组和行对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10028476/

相关文章:

arrays - 将Reducer方法的Iterator <Pojo>对象存储到数组

java - Hibernate ElementCollection/JoinTable IntegrityConstraintViolationException

java - 具有条件限制的 Hibernate 搜索返回不正确的计数

postgresql - 列必须出现在 GROUP BY 子句中

postgresql - 如何在 postgres 中插入 future 的时间戳

php - 这个 PostgreSQL 查询容易受到攻击吗?

java - 从android中的数组列表中逐一使用项目

arrays - Linearsort - 运行时分析

ruby - 如何从更频繁地返回开头对象的数组中取值?

java - 是否可以将 show_sql 的所有输出放在一个单独的文件中?