在批量删除时,发生错误!
错误代码:
java.lang.UnsupportedOperationException: Not supported! Use the AST translator...
at org.hibernate.hql.classic.QueryTranslatorImpl.executeUpdate(QueryTranslatorImpl.java:955)
at org.hibernate.engine.query.HQLQueryPlan.performExecuteUpdate(HQLQueryPlan.java:259)
at org.hibernate.impl.SessionImpl.executeUpdate(SessionImpl.java:1141)
at org.hibernate.impl.QueryImpl.executeUpdate(QueryImpl.java:94)
at com.logansoft.core.base.dao.DaoHibernate.batchDelete(DaoHibernate.java:797)
at com.logansoft.core.base.service.ServiceImpl.batchDelete(ServiceImpl.java:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy28.batchDelete(Unknown Source)
原因分析:
Hibernate3.0 采用新的基于ANTLR的HQL/SQL查询翻译器,在Hibernate的配置文件中,hibernate.query.factory_class属性用来选择查询翻译器。
(1)选择Hibernate3.0的查询翻译器:
hibernate.query.factory_class= org.hibernate.hql.ast.ASTQueryTranslatorFactory
(2)选择Hibernate2.1的查询翻译器
hibernate.query.factory_class= org.hibernate.hql.classic.ClassicQueryTranslatorFactory
为了使用3.0的批量更新和删除功能,只能选择1。
另外:网上说 (1)无法支持中文条件输入,这个情况,在项目中查询中文时还没碰到此问题。
分享到:
相关推荐
总结来说,Hibernate3通过`hibernate3.jar`提供了强大的ORM功能,依赖ASM库进行字节码操作,ANTLR处理查询语言,CGLIB生成代理类,C3P0管理数据库连接池,而JTA则确保了事务的正确处理。这些组件共同构建了一个高效...
构造器中的`SettingsFactory`扮演着重要的角色,它负责将配置信息转化为`Settings`对象,这一转化过程实质上是将`hibernate.properties`和`hibernate.cfg.xml`中的配置信息映射为Java对象,以便于后续的`...
Hibernate 源码分析过程 Hibernate 是一个基于 Java 的 ORM(Object-Relation Mapping)框架,允许开发者使用面向对象的方式与关系数据库交互。在本文中,我们将对 Hibernate 的源码进行深入分析,并探讨其核心特性...
1. **hibernate3.jar**:这是Hibernate的核心库,包含了所有基本的ORM功能,如实体管理、会话管理、查询语言(HQL)解析等。开发者主要通过这个jar包与Hibernate进行交互。 2. **javassist-3.9.0.GA.jar**:Java...
Hibernate3 是一个强大的Java持久化框架,用于简化数据库与对象之间的交互。这个压缩包包含了所有运行Hibernate3应用程序所需的核心库。下面将详细解释这些jar包及其在Hibernate框架中的作用。 1. **hibernate3.jar...
Hibernate提供了丰富的日志和统计信息,帮助开发者分析和优化查询性能。在`org.hibernate.stat`和`org.hibernate.engine.jdbc.spi`等包中,可以看到这些统计和调试工具的实现。 通过深入学习和理解这些源代码,...
这个文件包含了Hibernate Search使用的各种分析器,分析器是处理文本的关键组件,它们负责将用户输入的文本分解成可搜索的词元(tokens)。例如,英文分析器会将单词"Hello World"拆分为"hello"和"world",便于后续...
**Hibernate源码分析** Hibernate,一个著名的开源Java对象关系映射(ORM)框架,通过将Java对象和数据库表之间的映射关系自动化,极大地简化了数据访问层的开发工作。本篇将深入探讨Hibernate的源码,揭示其执行...
本文将开启一系列关于Hibernate源码的解析,首先,我们将探讨Hibernate的核心组件和主要工作流程。 1. Hibernate概述 Hibernate是由 Gavin King 创建的一个开源项目,它提供了一种在Java应用中持久化对象到关系...
3. 操作拦截:可以使用Hibernate的事件监听机制,比如Interceptor,来在数据保存或查询前、后执行分表逻辑。 4. 分页查询:在动态分表环境中,传统的数据库分页可能不再适用,因为数据分布在多个表中。此时,需要...
在探讨“hibernate过滤器使用例子”这一主题时,我们深入分析了如何在Hibernate框架中运用过滤器功能,以及如何结合分页技术优化数据查询效率。以下将详细阐述相关知识点,包括过滤器的基本概念、配置方法、源码解析...
Struts2、Spring3 和 Hibernate3 是经典的 Java Web 开发框架组合,通常称为 SSH(Struts2、Spring、Hibernate)框架。这个“Struts2 0+Spring3+Hibernate3 SSH Demo”是一个示例项目,旨在展示如何整合这三个框架来...
标题"hibernate3 一些有用的资料"表明了这是一些关于Hibernate3框架的参考资料,可能包括教程、API文档、示例代码等,旨在帮助用户理解和应用Hibernate3。 描述中提到的"hibernate3必用的jar包"暗示了这个压缩包...
通过以上详细分析,可以清晰地了解到 Hibernate 3.x 版本中关于快速启动、基础介绍、架构设计、配置管理、持久化类定义以及基本 ORM 映射的核心知识点。这些内容对于初学者理解和掌握 Hibernate 的基本用法至关重要...
至于`工具`,像IntelliJ IDEA或Eclipse这样的集成开发环境提供了强大的Hibernate支持,包括代码提示、对象关系映射编辑器以及集成的调试工具。这些工具可以帮助我们在编写和测试查询时提高效率,同时也能帮助我们...
此外,还有Criteria查询、HQL(Hibernate Query Language)等高级查询方式,使得代码更加简洁、易读。 当Struts2与Hibernate3结合使用时,通常会通过Action类调用Service层的方法,Service层再利用Hibernate的...
通过深入学习和分析 Hibernate 3.2 的源代码,开发者可以更全面地理解其内部工作原理,从而更好地利用这个强大的工具,提高开发效率,减少数据库操作的复杂度。源码包中的内容包括了核心库、示例项目、文档等,为...
5. **查询语言与检索**:深入分析了Hibernate Query Language (HQL)和Criteria API的使用方法,以及如何高效地执行数据库查询操作。 6. **事务管理**:讨论了如何利用Hibernate进行事务控制,包括本地事务与分布式...
Hibernate3 是一个非常重要的Java持久化框架,它在2000年代中期广泛流行,为开发者提供了方便的数据访问层,简化了对象关系映射(ORM)的过程。源码包的提供是为了让开发者能够深入理解其内部工作原理,提高编程技能...
Hibernate源码分析有助于深入理解其内部机制,提高开发效率,优化数据库操作性能。 1. **Hibernate核心模块(hibernate-core)** Hibernate的核心模块包含了ORM框架的主要功能,如实体管理、查询语言(HQL)、事件...