java - Hibernate 动态每行结果数

标签 java sql hibernate

我正在开发一项功能,该功能允许某些用户定义自己的 SQL 查询并在数据库上运行它们。

基本上,查询可能如下所示:

1. SELECT first_name, last_name FROM user;
2. SELECT first_name, last_name, id, address, email FROM user.

正如您所看到的,结果表中可能有不同数量的列。 有没有办法在 Hibernate 中处理这个问题?

例如,下面显示的基本用法对我没有任何帮助,因为我无法确定每个结果行至少有 2 列。

Query query = session.getSession().createSQLQuery(queryStr);
ScrollableResults results = query.scroll(ScrollMode.FORWARD_ONLY);
while (results.next()) { 
    data.put("firstName", String.valueOf(results.get(0)));
    data.put("lastName", String.valueOf(results.get(1)));    
}

此外,我认为我无法使用选择新 map ,因为用户必须运行 native MySQL 查询。

有什么办法可以解决这个问题吗? 预先感谢您的时间和建议!

最佳答案

首先,我认为公开一个允许用户输入SQL的接口(interface)并不是一个好主意。

无论如何,根据您的情况,您可以自己编程 SQL 结果集提取。如果不映射到对象,则不需要对象关系映射。然后,您可以去检查列是否存在,并将它们立即映射到您的数据结构中。学习普通 JDBC 的好方法。如果您使用 Hibernate 来解决应用程序中的其他问题,您甚至可以混合使用这些方法。

关于java - Hibernate 动态每行结果数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23184762/

相关文章:

java - 我可以在 Spring Security 中进行身份验证吗?

java堆内存管理内存不足

java - 怎么画曲线

java - JTable 搜索结果列表

php - 在 while 循环中获取表单值并插入到 MySQL 表中

java - Hibernate 是否更新未更改的实体?

java - 使用 JOOQ 返回通用插入中的 id

java - Spring+Hibernate异常: No hibernate session bound to thread

java - hibernate 。用于从另一个类中按对象选择的条件查询?

java - 如何在应用程序启动期间处理 org.hibernate.exception.GenericJDBCException?