当前位置: 首页 > 知识库问答 >
问题:

在Hibernate中键入安全的命名本地查询

陈毅
2023-03-14

Hibernate 版本 4.2.3.Final 是否支持类型安全的本机命名查询?我得到这个例外与一个:

java.lang.ArrayIndexOutOfBoundsException: 0
    at org.hibernate.ejb.AbstractEntityManagerImpl.createNamedQuery(AbstractEntityManagerImpl.java:637)
    at sun.reflect.GeneratedMethodAccessor23.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:241)
    at $Proxy78.createNamedQuery(Unknown Source)

当我使用Query类执行此查询时,一切都很好。TypeQuery似乎是这里的问题,异常不是很有帮助。我已经尝试过对非常复杂的查询进行简单查询,除非我将Query用于命名的本机查询,否则它们似乎都失败了。

共有2个答案

邵兴庆
2023-03-14

当我将一个硬编码的HQL查询从代码移动到映射文件时,我遇到了这个问题,但是不小心将它放在了< code >中

但是,是的,这不是一个非常有帮助的信息。

吕向荣
2023-03-14

您可以指定 SqlResultSetMapping 来消除此错误。例如:

@javax.persistence.Entity
@javax.persistence.SqlResultSetMapping(
    name = "implicit", entities =
    @javax.persistence.EntityResult(entityClass = Account.class)
)
@javax.persistence.NamedNativeQuery(
        name = "findAccount",
        query = "SELECT a.* FROM account a WHERE a.account_id=?1",
        resultSetMapping = "implicit")
public class Account implements java.io.Serializable {
    [...]
}

这样Hibernate就知道如何处理本机查询返回的值。

 类似资料:
  • 问题内容: 有没有办法使用HQL在Grails中使用hibernate命名查询? 我已经在《利用hibernate》一书中阅读了有关它们的内容,想知道是否有办法在Grails中使用它们。 像这样的映射文件中包含命名查询以及类映射: 现在,我确定可以包含一个 hibernate映射文件, 并将其集成到Grails GORM配置中,因为在此声明,包含 hibernate映射文件的 可以在Grails中

  • 简介 命名空间配置在Spring框架的2.0版本就可以使用了,他允许你通过额外的XML架构元素补充传统的Spring bean应用程序上下文。你可以从Spring的参考文档找到更多信息。命名空间元素可以简单的允许配置单个bean,或者更强大的,定义一个可选的配置语法,这样更贴近问题域并且对用户隐藏背后的复杂性。一个简单的元素可以隐藏多个bean 和添加到应用程序上下文的多个处理步骤。例如:从安全命

  • 我对命名查询有问题,但我不明白为什么它不工作。 我是这样定义查询的: 在这里我使用它: 错误:由:组织引起。冬眠HibernateException:命名查询中的错误:getUserRatings

  • 问题内容: 在C#中生成SQL查询的最安全的方法是什么,包括清除用户输入以防止注入?我正在寻找使用不需要外部库的简单解决方案。 问题答案: 使用Sql参数: http://msdn.microsoft.com/zh- cn/library/system.data.sqlclient.sqlparameter(v=vs.80).aspx 这是C#中的示例

  • 我有一个名为ArtWork的实体,该实体具有属性列表 样式具有称为标题的属性 我需要一个Hibernate查询,返回所有具有style title=“Abstract”的艺术品 -谢谢你的帮助

  • 我有一个疑问 但是在使用hibernate执行查询时,我收到 org.hibernate.QueryParameterException:无法定位命名参数[age] 怎么了?