`

org.hibernate.AssertionFailure: Interceptor.onPrepareStatement() returned null

阅读更多

映射文件配置正确,但报如下的异常:

org.hibernate.AssertionFailure: Interceptor.onPrepareStatement() returned null or empty string.
at org.hibernate.jdbc.AbstractBatcher.getSQL(AbstractBatcher.java:453)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:473)
at org.hibernate.jdbc.AbstractBatcher.prepareSelectStatement(AbstractBatcher.java:123)
at org.hibernate.id.IncrementGenerator.getNext(IncrementGenerator.java:83)
at org.hibernate.id.IncrementGenerator.generate(IncrementGenerator.java:44)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:98)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:175)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:98)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:509)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:501)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:497)
at com.test.testCategory.saveOrUpdate(testCategory.java:157)
at com.test.testCategory.test(testCategory.java:115)
at com.test.testCategory.main(testCategory.java:233)

我的原因是:创建session 的时候加入了拦截器Interceptor, 但在拦截器的实现类内的public String onPrepareStatement(String sql)方法返回了一个null值,所以出现了上面的异常. 

 

public class ForumInterceptor implements Interceptor, Serializable{

....................
....................
@Override
public String onPrepareStatement(String arg0) {
// TODO Auto-generated method stub
       return null;
}

.....................
}

在创建session之前使用了interceptor拦截器,但ForumInterceptor的onPrepareStatement(String arg0)方法
返回null值:
ForumInterceptor forumInterceptor = new ForumInterceptor();
session = getSessionFactory(configFile).openSession(forumInterceptor);	
forumInterceptor.setSession(session);	
Object[] arr = new Object[2];	
arr = new Object[2];
arr[0] = configFile;
arr[1] = session;
sessionStack.push(arr);

 

 我将onPrepareStatement(String arg0) 方法的返回值改为arg0后,再次执行代码就没有出现该异常了. 

public class ForumInterceptor implements Interceptor, Serializable{

....................
....................
@Override
public String onPrepareStatement(String arg0) {
// TODO Auto-generated method stub
       return arg0;
}

.....................
}

 

分享到:
评论

相关推荐

    hibernate(api 介绍).pdf

    1. org.hibernate.Interceptor Interface:响应持久化实例被加载、删除、保存、更新等事件,可以通过该接口实现数据更改日志。 映射接口 1. org.hibernate.type.Type Interface:表示 Hibernate 映射类型,是域...

    hibernate(api 介绍).docx

    1. org.hibernate.Interceptor Interface:不必由持久化类来实现,可以自定义实现该接口的类,也是响应持久化实例被加载、删除、保存、更新等事件。可以通过该接口实现数据更改日志。 映射接口 1. Type 接口:表示...

    org.springframework.transaction-3.1.2.RELEASE.zip

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.interceptor.TransactionInterceptor#0': Error setting property values; nested ...

    hibernate3.2官方源代码

    - Hibernate的`org.hibernate.event`和`org.hibernate.interceptor`包支持事件监听和拦截器机制,允许开发者在特定操作(如插入、更新、删除)前后插入自定义逻辑,增强了框架的可扩展性。 7. **实体状态管理:** ...

    Struts_Hibernate API 文档 chm

    3. **Criteria API**: 提供了一种基于对象的查询方式,比SQL更面向对象,比如`org.hibernate.criterion.Criterion` 和 `org.hibernate.criterion.Restrictions`。 4. **HQL (Hibernate Query Language)**: 是...

    0Java.Web开发:JSP.Servlet.Struts.Spring.Hibernate.Ajaxdianzijiaocheng

    Struts1提供了Interceptor拦截器机制,而Struts2则更加强大,引入了更多OOP和AOP概念。 4. **Spring**:Spring是一个全面的企业级应用开发框架,其核心特性包括依赖注入(DI)和面向切面编程(AOP)。Spring MVC是...

    spring2.5 struts2.0 hibernate3.2.5 搭建的企业级开发基础模块

    Hibernate:spring.local.hibernate.cfg.xml Struts:struts.xml、struts.properties 配置很简单,用点心看就会了,多的不说了,好好享受咯 哦 忘记介绍了, 当中还有本人写的几个自定义标签:...

    WebWork.Spring.Hibernate整合开发网络书城

    《WebWork.Spring.Hibernate整合开发网络书城》这个主题涵盖了三个关键的技术框架:WebWork、Spring和Hibernate。这些技术在现代企业级Java应用开发中扮演着至关重要的角色,特别是对于构建复杂的、数据驱动的Web...

    hibernate3.2_src官方源码

    7. **事件监听器和拦截器**:Hibernate允许在特定操作(如加载、保存、更新等)前后添加自定义逻辑,这在`org.hibernate.event`和`org.hibernate.interceptor`包中体现。 8. **实体生命周期**:源码中展示了...

    J2EE面试题(包含了大部分的框架面试题如:hibernate Spring Strust 等)

    1. Struts 2的基本架构:Action、Result、Interceptor和ValueStack等概念。 2. Struts 2的拦截器模型:自定义拦截器的编写和配置,以及常用的内置拦截器。 3. Struts 2的配置文件:struts.xml,Action配置,结果映射...

    hibernate-3.2.5源代码分析

    `org.hibernate.event`和`org.hibernate.interceptor`包提供了接口和实现,使得开发者可以扩展Hibernate的行为。 6. **持久化类的设计** 在Hibernate中,持久化类通常通过注解或XML映射文件来定义。源代码中的`@...

    struts2源代码分析

    5. `org.apache.struts2.interceptor`:定义了内置的拦截器,这些拦截器可以在请求处理前或后执行特定任务,如认证、授权、日志记录等。 6. `org.apache.struts2.util`:提供了一些实用工具类。 7. `org.apache....

    Struts2.Hibernate3.2.Spring2.0整合

    Struts2、Hibernate3.2和Spring2.0是Java Web开发中三个非常重要的框架,它们的整合在企业级应用中十分常见,旨在提供更高效、灵活和可维护的解决方案。下面将详细介绍这三个框架以及它们整合的核心概念和知识点。 ...

    搭建ssh所需类库

    SSH(Struts、Spring、Hibernate)是Java Web开发中常用的一种三层架构模式,它整合了三个强大的开源框架:Struts负责表现层,Spring处理业务逻辑和依赖注入,Hibernate则作为持久层的数据访问框架。在搭建SSH框架的...

    STRUTS2 hibernate 和 spring 三大框架的API文档

    在Java开发领域,Struts2、Hibernate和Spring是三大核心框架,它们分别专注于Web层、持久化层和应用层的管理。这些框架的API文档是开发者的重要参考资料,可以帮助理解其内部工作原理,优化代码,提高开发效率。下面...

    springMVC+hibernate+json框架整套jar包,亲测

    Spring MVC、Hibernate 和 JSON 是构建现代企业级 Java 应用程序的三大核心技术。Spring MVC 是一个基于模型-视图-控制器(MVC)设计模式的轻量级 Web 框架,它允许开发者将业务逻辑与表现层分离,提供灵活的请求...

    《Java-Web应用开发基础》综合练习2.docx

    2. Struts.xml 中的拦截器配置:在 Struts.xml 文件中,拦截器是使用 interceptor 标签来配置的。 3. JSP 中的 include 指令:JSP 中的 include 指令用于将一个 JSP 文件包含到另一个 JSP 文件中,使用 jsp:include...

    SpringMVC+Spring+hibernate jar

    Spring MVC、Spring 和 Hibernate 是Java开发中非常重要的三个框架,它们在企业级Web应用开发中起着关键作用。本文将详细介绍这三个组件以及它们如何协同工作。 **Spring MVC** Spring MVC 是 Spring 框架的一个...

    SpringMVC+Hibernate实现增删改

    SpringMVC和Hibernate是Java开发中的两个重要框架,它们在企业级应用开发中扮演着核心角色。SpringMVC是Spring框架的一部分,主要处理Web应用程序的请求-响应模型,而Hibernate则是一个对象关系映射(ORM)框架,...

    com.springsource.org.aopalliance-1.0.0的jar包

    `com.springsource.org.aopalliance`库提供了两个主要的接口:`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.intercept.Interceptor`,它们定义了拦截器的行为,使得不同的AOP实现可以互相协作...

Global site tag (gtag.js) - Google Analytics