`
zyadi1980
  • 浏览: 24763 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Hibernate 在执行删除时的报错原因

阅读更多

今天修改了几条占用资源比较多的hql语句,把传递参数的hql改为“?”的形式,遇到了如下错误,看似很负责的错误,其实很简单的原因,

错误中是这样的:
索引中丢失 IN 或 OUT 参数:: 1

 代表的是HQL语句中的第一个参数和数据库中字段类型不匹配。数据库中是number型,结果给传递成了Strings型,自然报错了,不过hibernate可谓是大动肝火,出了个触发器中的错误。

org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: could not execute update query; uncategorized SQLException for SQL [delete from relate_member where (related_id not in  (? , ? , ?)) and relate_member_id=? and relate_type=?]; SQL state [null]; error code [17041]; 索引中丢失  I
N 或 OUT 参数:: 1; nested exception is java.sql.SQLException: 索引中丢失  IN 或 OUT 参数:: 1
java.sql.SQLException: 索引中丢失  IN 或 OUT 参数:: 1
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
        at oracle.jdbc.driver.OraclePreparedStatement.processCompletedBindRow(OraclePreparedStatement.java:1680)
        at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3279)
        at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3367)
        at org.hibernate.hql.ast.exec.BasicExecutor.execute(BasicExecutor.java:75)
        at org.hibernate.hql.ast.QueryTranslatorImpl.executeUpdate(QueryTranslatorImpl.java:334)
        at org.hibernate.engine.query.HQLQueryPlan.performExecuteUpdate(HQLQueryPlan.java:209)
        at org.hibernate.impl.SessionImpl.executeUpdate(SessionImpl.java:1148)
        at org.hibernate.impl.QueryImpl.executeUpdate(QueryImpl.java:94)
        at com.seeyon.v3x.peoplerelate.dao.PeopleRelateDao$2.doInHibernate(PeopleRelateDao.java:51)
        at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:366)
        at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:334)

 or.java:75)
        at org.hibernate.hql.ast.QueryTranslatorImpl.executeUpdate(QueryTranslatorImpl.java:334)
        at org.hibernate.engine.query.HQLQueryPlan.performExecuteUpdate(HQLQueryPlan.java:209)
        at org.hibernate.impl.SessionImpl.executeUpdate(SessionImpl.java:1148)
        at org.hibernate.impl.QueryImpl.executeUpdate(QueryImpl.java:94)
        at com.seeyon.v3x.peoplerelate.dao.PeopleRelateDao$2.doInHibernate(PeopleRelateDao.java:51)
        at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:366)
        at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:334)

分享到:
评论
1 楼 tacone 2008-10-17  
伙计,动肝火的是OCALE的JDBC
    at com.seeyon.v3x.peoplerelate.dao.PeopleRelateDao$2.doInHibernate(PeopleRelateDao.java:51)太暴露了

相关推荐

    hibernate-distribution-3.3.2.GA-dist

    2. **会话接口**:Session是Hibernate的主要工作接口,用于执行CRUD(创建、读取、更新和删除)操作,同时提供事务管理和缓存管理功能。 3. **查询语言HQL**:Hibernate Query Language(HQL)是一种面向对象的查询...

    hibernate映射主键生成策略native

    当设置为`create`时,Hibernate会在启动时删除现有表并重新创建新表。这通常用于开发环境中快速迭代的需求。在生产环境中,为了避免意外的数据丢失,建议将其设置为`update`或`validate`。 对于Oracle数据库来说,...

    ssh框架报错分析集合

    nested exception is org.hibernate.exception.SQLGrammarException: could not execute query` 这个异常表明执行SQL查询时出现了语法错误。检查并修正相关的SQL语句,确保其符合SQL语法规范,并且与数据库表结构...

    Struts、Spring、Hibernate集成

    - 选中需要进行反向工程的表(如 DEPT、EMP),执行 Hibernate 反向工程。 - 选择生成 Hibernate 映射文件、Java Data Object 以及 Java Data Access Object,并确保选择 Spring DAO。 - 设置 ID 生成策略为 ...

    websphere数据源配置

    - **删除配置文件**:在`persistence.jar`中删除`hibernatecfg.properties`和`hibernate.properties`两个配置文件。这一步骤是为了避免不必要的配置冲突,建议在打包前从源代码中删除。 ##### 10. 测试登录 完成...

    myeclipse+jboss5+shh

    打开Myeclipse的Hibernate透视图,通过`Window` -> `Open Perspective` -> `Myeclipse Hibernate`,然后按照向导操作,选择数据库类型(这里假设为MySQL),完成配置后,对项目`Demo`执行`Add Hibernate ...

    我整理的三大框架的常见问题和解决方案

    在使用Hibernate框架进行数据库操作时,可能遇到类加载错误,如`java.lang.NoClassDefFoundError`,这通常意味着某些Hibernate相关类未能被正确加载。解决方案包括: 1. **检查Hibernate版本冲突**:如果同时引入了...

    java 遇到的各种异常

    - **原因分析**:当使用了`cascade="all-delete-orphan"`时,集合中的对象在删除时会被级联删除,但不允许直接替换集合。 - **解决方案**: - 移除集合中不需要的对象,而不是替换整个集合。 - 如果确实需要替换...

    Java开发常见错误及解决方案文件

    - 原因分析:此类错误通常发生在运行时,JVM找不到所需类的定义。可能的原因包括类文件未被正确上传到服务器、上传了类文件但服务器没有正确检测到,以及程序运行时所需的内存超出了JVM分配的空间。 - 解决方案: ...

    new_dao

    - **接口定义**:DAO接口通常包含了一系列用于执行数据库操作的方法,如添加、删除、更新和查询数据。 - **实现类**:DAO接口的实现类提供了具体的数据访问逻辑,如SQL语句的执行,可能使用JDBC或其他ORM框架(如...

    Maven-SSH框架搭建

    Hibernate支持JPA规范,提供了CRUD(创建、读取、更新、删除)操作以及复杂的查询能力。 在Maven环境中搭建SSH框架,你需要先配置项目的pom.xml文件,引入所需的依赖。对于Struts2,Spring和Hibernate,你需要指定...

    注解的使用

    注解处理器是Java编译过程的一部分,它们会在编译时读取源代码中的注解并执行相应操作。例如,Lombok库通过注解处理器自动为类生成getter、setter和构造函数。 - **`@Generated`注解**:用于标记由注解处理器生成的...

    将applyId上面误写的@tableId注解去掉即可

    3. **运行时异常**:在执行查询或更新操作时,由于主键注解错误,可能会抛出异常,导致程序无法正常运行。 4. **逻辑错误**:如果`applyId`字段原本有其他业务含义,误添加主键注解可能会改变其原有的逻辑,导致功能...

    java面试

    一般异常则是所有非运行时异常的统称,包括IOException、SQLException等,需要在方法签名中声明,否则编译器会报错。 2. **Servlet生命周期**:Servlet的生命周期包括实例化、初始化、服务和销毁四个阶段。实例化时...

    java必备知识点大全.pdf

    final、finally、finalize三者区别:final用于声明常量,finally用在try-catch-finally语句中表示必须执行的代码块,finalize是Object类的一个方法,垃圾回收器在销毁对象之前会调用它。 Io流的层次结构:Java中Io...

    SQL注入专题防范+攻击全手册

    SQL注入是一种常见的网络安全威胁,它利用了Web应用程序未能有效过滤用户输入数据的漏洞,使得攻击者可以执行恶意的SQL命令,获取、修改、删除数据库中的敏感信息,甚至完全控制数据库服务器。本手册全面探讨了SQL...

    jpa测试用例(很详细的介绍)

    - 对于JPA的单元测试,通常会使用模拟库如Hibernate Test或Mockito来隔离数据库交互,避免在测试中真正执行数据库操作。 - 测试Entity的创建,验证save()方法是否能正确地将对象持久化到数据库。 - 测试查询,...

    SQL注入技术原理及实战.pdf

    - 这种攻击的根本原因是开发者未正确验证和过滤用户输入,允许了恶意SQL语句的执行。 2. **SQL注入攻击流程** - 用户通过浏览器发送带有恶意SQL的请求给Web服务器。 - Web服务器接收请求并构建SQL查询,其中包含...

    iteye的技术博客集合

    - **在命令行中运行 “mvn compile” 因为中文报错**:这部分内容提供了在使用 Maven 时如何避免因中文路径导致的编译错误。 - **JSP 获取 spring 的容器 ApplicationContext**:这部分介绍了如何在 JSP 页面中获取 ...

Global site tag (gtag.js) - Google Analytics