HibernateTemplate 可以与 Envers 一起使用吗?如果是这样,怎么办?

2024-04-09

我正在尝试在一个也使用 Hibernate 和 Spring 的项目上使用 Envers - 我非常欣赏 HibernateTemplate 提供的代码减少功能。

我在 JPA 下配置了 Envers,经过一些调整后,我能够通过 EnversHibernateToolTask​​ Ant 任务生成模式(包括审核表)。但是,当我编写如下代码时:

    hibernateTemplate.saveOrUpdate(f);

数据被持久化,但没有任何内容进入审计表。相反,如果我写:

    EntityManager em = emf.createEntityManager();
    em.getTransaction().begin();
    em.persist(f);
    em.getTransaction().commit();

然后数据进入审计表(但我宁愿使用以前的语法 - 我知道使用 JPA 的 EntityManager 将该代码与 Hibernate 解耦,但它简单并不能消除麻烦 - 更改 ORM 引擎并不是我最疯狂的梦想项目。)

检查我的applicationContext.xml配置:

<bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="projetox" />
    <property name="dataSource" ref="dataSource" />
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="showSql" value="true" />
        </bean>
    </property>
</bean>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="packagesToScan" value="com.w2it.projetox.model" />
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
        </props>
    </property>
</bean>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    ...
</bean>

这是我的persistence.xml setup:

<persistence-unit name="projetox" transaction-type="RESOURCE_LOCAL">
    <jta-data-source>java:/DefaultDS</jta-data-source>
    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
        <!--  Hibernate Envers -->
        <property name="hibernate.ejb.event.post-insert"
            value="org.hibernate.envers.event.AuditEventListener" />
        <property name="hibernate.ejb.event.post-update"
            value="org.hibernate.envers.event.AuditEventListener" />
        <property name="hibernate.ejb.event.post-delete"
            value="org.hibernate.envers.event.AuditEventListener" />
        <property name="hibernate.ejb.event.pre-collection-update"
            value="org.hibernate.envers.event.AuditEventListener" />
        <property name="hibernate.ejb.event.pre-collection-remove"
            value="org.hibernate.envers.event.AuditEventListener" />
        <property name="hibernate.ejb.event.post-collection-recreate"
            value="org.hibernate.envers.event.AuditEventListener" />
    </properties>
</persistence-unit>

有人知道这里发生了什么吗?谢谢你!


HibernateTemplate 有其 JPA 对应项,Jpa模板 http://static.springsource.org/spring/docs/2.5.x/reference/orm.html#orm-jpa-template它提供了相当相似的功能。

Envers 不能与 HibernateTemplate 一起使用的原因是它依赖于 JPA 事件(您可以看到在您的persistence.xml上面)在使用 EntityManager 时触发。理论上,当使用 HibernateTemplate 时,可以编写代码来触发 Hibernate 会话中的这些事件,但它相当复杂。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HibernateTemplate 可以与 Envers 一起使用吗?如果是这样,怎么办? 的相关文章

  • Grails 2.3.0 自动重新加载不起作用

    我最近将我们的项目升级到 grails 2 3 0 一切工作正常 除了每当我更改代码时自动重新加载都无法工作的问题 这包括所有项目工件 控制器 域 服务 gsps css 和 javascript 文件 我的旧版本 grails 可以正常工
  • 在文本文件中搜索单词并返回其频率

    如何在包含单词文本的文本文件中搜索特定单词并返回其频率或出现次数 使用扫描仪 String text Question how to search for a particular word in a text file containin
  • 在 ContainerRequestFilter 中填充 spring request 作用域 bean

    我使用 jersey 1 13 和 spring 3 1 1 编写了一个在 tomcat 6 上运行的休息服务 在 tomcat 中 我使用一个领域来进行身份验证 在我的应用程序中 我需要当前用户 但我不想从每个资源中的球衣访问Securi
  • 使用 RecyclerView 适配器在运行时更改布局屏幕

    我有两个布局文件 如下所示 如果列表中存在数据 则我显示此布局 当列表为空时 我会显示此布局 现在我想在运行时更改布局 当用户从列表中删除最后一项时 我想将布局更改为第二张图片中显示的 空购物车布局 In getItemCount Recy
  • Java套接字:在连接被拒绝异常时重试的最佳方法?

    现在我正在这样做 while true try SocketAddress sockaddr new InetSocketAddress ivDestIP ivDestPort downloadSock new Socket downloa
  • 无法在 Spring Boot 测试中模拟 persistenceContext

    我正在使用带有 Mockito 框架的 spring boot 测试来测试我的应用程序 存储库类 EntityManager 之一作为参考 我的班级如下所示 Repository Transactional Slf4j public cla
  • 记录骆驼路线

    我的项目中有几个 Camel 上下文 如果可能的话 我想以逆向工程方式记录路线 因为我们希望保持与上下文相关的文档最新 最好的方法是什么 我们倾向于预先实际设计路线 并使用来自EIP book http www eaipatterns co
  • 将表值参数与 SQL Server JDBC 结合使用

    任何人都可以提供一些有关如何将表值参数 TVP 与 SQL Server JDBC 一起使用的指导吗 我使用的是微软提供的6 0版本的SQL Server驱动程序 我已经查看了官方文档 https msdn microsoft com en
  • 如何在没有 web.xml 的情况下将 Struts2 添加到 Web 应用程序?

    有人可以帮助我使用 Spring Boot 和 Struts2 进行最小项目设置吗 我已经使用 H2 数据库创建了一个 Spring Boot 应用程序 我还添加了一个h2Configuration类 以便我能够访问数据库localhost
  • 如何将 Jfreechart(饼图)添加到 netbeans 的面板中

    我正在使用 netbeans gui 编辑器 并且正在尝试添加一个本身位于内部框架中的 Jfreechart 并且这个内部框架我想将其添加到面板中 正如您在此图中看到的那样 抱歉 我无法直接发布图像 因为我新手 http www flick
  • 获取给定类文件的目录路径

    我遇到的代码尝试从类本身的 class 文件所在的同一目录中读取一些配置文件 File configFiles new File this getClass getResource getPath listFiles new Filenam
  • 如何记录来自 Akka (Java) 的所有传入消息

    在 Scala 中 您可以使用 LoggingReceive 包装接收函数 如何通过 Java API 实现相同的目标 def receive LoggingReceive case x do something Scala API 有Lo
  • Spring Security OAuth2简单配置

    我有一个简单的项目 需要以下简单的配置 我有一个 密码 grant type 这意味着我可以提交用户名 密码 用户在登录表单中输入 并在成功时获得 access token 有了该 access token 我就可以请求 API 并获取用户
  • 尝试使用等于“是”或“否”的字符串变量重新启动 do-while 循环

    计算行程距离的非常简单的程序 一周前刚刚开始 我有这个循环用于解决真或假问题 但我希望它适用于简单的 是 或 否 我为此分配的字符串是答案 public class Main public static void main String a
  • 解析输入,除了 System.in.read() 之外不使用任何东西

    我很难找到具体的细节System in read 有效 也许有人可以帮助我 似乎扫描仪会更好 但我不允许使用它 我被分配了一个任务 我应该以 Boolean Operator Boolean 的形式读取控制台用户输入 例如T F 或 T T
  • 对象锁定私有类成员 - 最佳实践? (爪哇)

    I asked 类似的问题 https stackoverflow com questions 10548066 multiple object locks in java前几天 但对回复不满意 主要是因为我提供的代码存在一些人们关注的问题
  • 如何在 Quartz 调度程序中每 25 秒运行一次?

    我正在使用 Java 的 Quartz Scheduling API 你能帮我使用 cron 表达式每 25 秒运行一次吗 这只是一个延迟 它不必总是从第 0 秒开始 例如 序列如下 0 00 0 25 0 50 1 15 1 40 2 0
  • 哪个集合更适合存储多维数组中的数据?

    我有一个multi dimensional array of string 我愿意将其转换为某种集合类型 以便我可以根据自己的意愿添加 删除和插入元素 在数组中 我无法删除特定位置的元素 我需要这样的集合 我可以在其中删除特定位置的数据 也
  • Java &= 运算符应用 & 或 && 吗?

    Assuming boolean a false 我想知道是否这样做 a b 相当于 a a b logical AND a is false hence b is not evaluated 或者另一方面 这意味着 a a b Bitwi
  • JAXB - 列表<可序列化>?

    我使用 xjc 制作了一些课程 public class MyType XmlElementRefs XmlElementRef name MyInnerType type JAXBElement class required false

随机推荐

  • 如何在android中使用用户当前位置获取邮政编码

    我正在尝试获取邮政编码 但无法获取邮政编码 邮政编码 我可以获取当前城市 但是当我尝试获取邮政编码时 它给了我一个空指针异常 谁能帮我 final Geocoder gcd new Geocoder getApplicationContex
  • 字符的序数/int/ascii 值

    在 clojure repl 中我可以这样做 gt int a 97 在闭包脚本中 我不断得到 gt int a 0 在我当前的 clojurescript 项目中 我定义了一个 var def ord a int a 当我检查发出的 ja
  • C:将值扫描到数组中与常量的相等性进行比较的问题[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我对 C 完全陌生 现在我正在尝试掌握基础知识 但在从 scanf 读取数据和填充数组时遇到问题 根据我的观察 我认为问题出在 s
  • 有没有办法在android 2.1中不使用动画来旋转按钮

    我正在寻找旋转按钮的方法 不使用动画 我不想使用动画 因为this https stackoverflow com questions 8037185 onlclick listener is not working properly 如果
  • 如何向这个 elm 效果示例添加第二个骰子?

    我是 Elm 新手 一直在查看以下示例 请注意 这是在较新的 0 17 架构下 其中 Action 现在是 Command http elm lang org examples random http elm lang org exampl
  • mysql查询失败时是否有错误日志记录?

    我很好奇当我执行查询时 MySQL 数据库是否记录任何错误 我知道我打电话mysql 错误 http php net manual en function mysql error php检索错误 但数据库端是否还有其他日志记录 默认情况下
  • 用于数据库备份的Linux shell脚本

    我尝试了很多数据库备份脚本 但我无法成功 我想每小时备份一次数据库 我将文件添加到 etc cron hourly 文件夹 将其 chmod 更改为 755 但它没有运行 至少我写了我的伪代码 如果您能为该操作编写一个脚本并告诉我我还应该做
  • 为jade文件中的变量赋值

    是否可以在jade文件中分配变量 以使代码更具可读性 具体来说 我创建了这个jade文件 extends layout var format 1 0f block title title Your score table block bod
  • 如何声明依赖关系

    我正在研究 Dagger 2 所以我想了解一些基本的东西 我有以下代码 Module public class MainModule Provides public Presenter provideMainActivityPresente
  • 在头文件中声明 extern 结构模板以在 c 文件中全局使用

    我的目标是声明和定义一个结构template在我的头文件中 然后我希望使用这个模板来声明和定义个人我的 c 文件中的结构 这是我的目标的一个粗略示例 头文件 include
  • 如何在 ruby​​ 中读取 INI 文件

    如何在 ruby 中读取 写入 ini 文件 我有一个需要的 ini 文件 read 更改条目 写出到不同的位置 我该如何在红宝石中做到这一点 关于这一点的文档是黯淡的 使用 InIFile Gem 正如 method所说 使用inifil
  • js中压缩一串0和1

    介绍 我目前正在用 js 开发 John Conway 的 Game of Life 我的游戏可以运行 在这里查看 http goljs github io GoL 我正在开发额外的功能 例如与您的朋友分享您的 网格 游戏 为此 我将网格的
  • 如何使用fastify-cors实现仅一个api跨域?

    我想让 POST 本地主机 产品 只是这个API可以跨域 我不知道该怎么做 fastify register require fastify cors origin methods POST 这是我的 API method POST url
  • 如何定义软件的版本号?

    确定软件或组件应使用的版本号的最佳方法是什么 设置版本号有通用规则吗 我很确定这是一个基本问题 但搜索一段时间后我没有找到任何有用的东西 微软有一个约定 major minor revision build 或关注Jeff 的版本控制系统
  • 如何使用 Ansible 在远程文件中搜索字符串?

    基于一个问题 如何使用 Ansible 在文件中搜索字符串 https superuser com a 1764857 754490 Ansible 如何从文件内容中提取特定字符串 https stackoverflow com a 750
  • 如何让 Emacs 自动缩进我的 C 代码?

    我刚刚开始熟悉 emacs 但我对它在我按回车键时不缩进的趋势感到沮丧 我知道如果我按 C j 就会执行此操作 但我无法养成这种习惯 我就是不能 我需要按回车键 而且我讨厌每次都重新切换 我进入选项并找到 C 模式挂钩和 C 模式挂钩等 他
  • 如何将字符串转换为 CLLocationDegrees Swift 2

    我正在尝试转换从 Firebase 检索的字符串并将其添加为 Google 地图上的多个注释 不幸的是 每当我的应用程序执行当前代码时就会崩溃 ref FIRDatabase database reference ref child Loc
  • 如何在 Scala 中使用 JUnit ExpectedException?

    我希望能够使用 JUnit 4 7预期异常 Rule http kentbeck github com junit javadoc latest org junit rules ExpectedException html在斯卡拉 然而 它
  • 无法在 iOS 上将 CIImage 保存到文件而不发生内存泄漏

    下面的代码片段保存了一个CIImage到磁盘使用UIImage void applicationWillResignActive UIApplication application NSString filename Test png UI
  • HibernateTemplate 可以与 Envers 一起使用吗?如果是这样,怎么办?

    我正在尝试在一个也使用 Hibernate 和 Spring 的项目上使用 Envers 我非常欣赏 HibernateTemplate 提供的代码减少功能 我在 JPA 下配置了 Envers 经过一些调整后 我能够通过 EnversHi