我正在开发一项功能,该功能允许某些用户定义自己的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)));    
}

此外,我认为我不能使用select new map因为用户必须运行本机MySQL查询。

有什么解决办法吗? 在此先感谢您的时间和建议!

===============>>#1 票数:1 已采纳

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

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

  ask by Ionut translate from so

未解决问题?本站智能推荐:

1回复

休眠获取的记录数与数据库上的计数不匹配

我有一个像下面这样的实体 错误消息实体就像 我正在使用休眠条件从数据库中获取所有记录; @SuppressWarnings(“未选中”) @Override 公共列表listTableOneEntites() { 条件标准= getSession()。crea
2回复

是否可以从休眠中动态添加存储过程?

我想使用休眠从Java代码动态添加存储过程。 我做了以下操作,但这总是导致错误提示: 您的SQL语法有误; 查看与您的MySQL服务器版本相对应的手册以使用正确的语法 我究竟做错了什么 ? 编辑:以下是整个过程:
1回复

具有复合ID休眠的动态更新

在休眠模式下,如果启用了动态更新,则在更新对象时,它仅对修改后的列生成查询 考虑使用组件的带有Composite-id的类。 复合ID saveOrupdate对象。 如果给定的键不是数据库,则添加否则更新对象 现在我想要的是如何合并这两个功能? 例如,我有一个具有年龄,工资,
1回复

休眠-在字段中的oneToMany-Relation中存储元素数量? (例如评论数)

我有一个实体“ post”,其中有很多“评论”。 现在,我不想每次都想显示注释数时就计算此集合的大小,因此,我想创建一个整数字段并在此处存储注释数。 如果发布了评论,我想增加评论,如果删除评论,我想减少评论。 hibernate是否为此提供了任何“开箱即用”的方法? 还是我需要手工实
1回复

休眠QuerySyntaxException

我正在例外 下面是我查询表的功能 请帮我..
1回复

休眠QueryException

您好,我正在尝试在Criteria中引用组合键的属性,该组合键在实体上定义为and @Embeddable 我需要通过以下方式到达kName: 但是当我尝试从BJP是具有以下条件的属性的基类中获取它时 我收到以下错误: 我应该如何制定条件查询,以便到达kName属
3回复

休眠日期

我对Java Hibernate和SQL有疑问 我想将日期字段添加到我的实体类中。 我在DDL脚本(data.sql)中使用了以下日期格式-'yyyy-mm-dd'现在,我不知道该日期要导入哪个类。 我应该从java.util导入Date吗? *或来自java.sql。 *? 我应该为此栏添加
2回复

加入休眠

我正在使用Java和Hibernate 3。 我有一个sql如下: 这是一个自我加入的案例。 表结构如下: 开发人员 上述查询的输出是: 现在我想在HQL或条件中转换此查询。 谁能帮我? 编辑: - Developer.java
1回复

休眠多对多3个表

我在休眠状态下的多妈妈关系有问题。 这个想法是:我有一个Employee表(pracownik),一个grapfic表(grafik)和一个shift表(detale zmiany)。 现在我想有一张桌子,我可以检查一位员工的工作情况,例如。 从01.01-07.01的凌晨6点至下午2点
1回复

休眠更新问题

我的程序中有一个奇怪的休眠行为。 我有两门课有千丝万缕的联系:好和价格: 当我更新包含商品的层次结构时,我在休眠sql日志中看到这样的查询: 所有价格(当价格没有实际变化时)。 为什么冬眠将此字段设置为null并在将其还原回来后,是否有可能避免这种情况?