当前位置: 首页 > 面试题库 >

Hibernate中的createSQLQuery使用Prepared Statement吗?

暴博远
2023-03-14
问题内容

我使用的是createSQLQuerysetStringHibernate中(没有硬编码值)。我想知道Hibernate
PreparedStatement用于createSQLQuery什么?

关心:

我想将此查询创建的执行计划保留在缓存中,以便下次在数据库上触发相同的查询时,它将使用相同的执行计划。

仅供参考: 我正在使用MSSQL Server 2008

/* This is just example I'm not using same query */
Query nativeSQLQuery = session.createSQLQuery("select Firstname from user_master where user_name = :param");
nativeSQLQuery.setString("param", "vicky.thakor");

我找不到stackoverflow链接,甚至在Google中也找不到,所以请提供我的链接(如果有)。


问题答案:

我试图使用Hibernates的createSQLQuery方法执行查询,那么它将给我以下异常:-

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2568)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2113)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2275)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1787)
at org.hibernate.loader.Loader.doQuery(Loader.java:674)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2220)

从上述异常中我们可以看到它将尝试在内部执行
com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2275)


我还在Hibernate
createSQLQuery参数替换处发现了@Alex Serna的问题,其中Alex在尝试替换表名时也得到了异常。

观察堆栈跟踪,我认为 Hibernate在内部将PreparedStatement用于createSQLQuery



 类似资料:
  • 问题内容: 我有几个要查询的带有复合主键的sql视图,由于Hibernate使得使用复合键很麻烦,因此我正在使用。问题在于此方法只能返回一个List,而我需要通过其索引来引用列。 我有什么机会可以做类似jdbc的事情,并通过其sql名称而不是其索引来引用这些列? 问题答案: 从代码中可以看出,列表包含代表每一行的Map对象。每个Map对象将具有列名作为键,并将值作为值。 注意:这适用于SQLQue

  • 代码如下: 运行时,会出现错误 原因:org。冬眠QueryParameterException:位置超出已声明序数参数的数量。请记住,序数参数是基于1的!职位:1 被抛出,我知道这是由sql字符串中的'--'引起的,hibernate将其解释为sql注释, 我试着用 这可以成功运行,但是输出变成\-\-,但是我想要的是——在输出中。 那么如何在hibernate中转义--? 如果我运行selec

  • 问题内容: 为了使我们的代码更加标准,我们被要求更改将SQL变量硬编码为预处理语句的所有位置,然后绑定这些变量。 但是我遇到了问题。 这是代码: 我在执行SQL时收到此错误: 我应该改为使用? 问题答案: Using 使用 如果您的表的列类型为: 该方法接收到一个字符串,该字符串表示格式为日期的日期。例如: 假设您有一个type类型的变量,则可以这样进行转换: 当前的 如果要插入当前日期: Usi

  • 为了使我们的代码更加标准,我们被要求将所有我们将SQL变量硬编码为准备好的语句的地方改为绑定变量。

  • 问题内容: 谁能告诉我Hibernate的区别: 谁能告诉我这三个函数返回什么数据,cq指导我找到一个适当而简单的链接来研究这些Hibernate函数? 问题答案: 为了在Hibernate ORM框架中创建查询,有三种不同的类型。以下是创建查询实例的三种方法: 详细研究每个类别的详细信息。 方法createQuery()使用HQL语法创建Query对象。例如: 方法createSQLQuery(

  • 问题内容: 我有几个SQL查询,我只是想在数据库上触发。我在整个应用程序中都使用hibernate方式,因此我更喜欢使用hibernate方式来调用此sql查询。 在下面的示例中,我想获取count +名称,但是当我使用createSQLQuery()时无法弄清楚如何获取该信息。 我已经看到了一些解决方法,人们只需 要从结果中 得出一个“ count( )”,但是在这种情况下,我使用count(