Hibernate Envers:跟踪 OneToMany 关系拥有方的修订

2023-12-11

我有两个经过审计的实体 A 和 B。实体 A 拥有实体 B 的集合(注释为一对多关系)。将 A 的新实例插入数据库时​​,A 和 B 的所有行都处于同一修订版(假设为修订版 1)。然后,A 上有更新,仅影响实体 B 的实例(级联类型为合并)。因此,更新后,实体 A 仍处于修订版 1,而实体 B 处于修订版 2(审核表中的新 MOD 条目)。

问题是,当我检索 A 的所有修订时,我希望得到 2 个修订作为回报:一个用于创建,一个用于修改 B 的所属集合。 在 ManyToMany 的情况下我可以得到这种行为,但我不能让它以与 OneToMany 关系相同的方式工作。

(我使用的是 Hibernate 3.6.10-Final)


我通过在 A 实体的等效项上添加隐藏的 LastUpdated 日期字段解决了我的问题。

@Entity
public class A {
    private Date lastModified;
    @OneToMany(mappedBy = "a", cascade = CascadeType.ALL )
    private List<B> blist;
    public void touch(){
        lastModified=new Date();
    }
}

在相关实体(例如您的 B 字段)中,我添加了以下内容:

public class B {
    @ManyToOne
    private A a; 
    
    @PreUpdate
    public void ensureParentUpdated(){
        if(a!=null){
            a.touch();
        }
    }
}

这确保每当将修订版本添加到 B 时,修订版本也会添加到 A。

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

Hibernate Envers:跟踪 OneToMany 关系拥有方的修订 的相关文章

随机推荐

  • Codeigniter mysql 左连接包括选择

    如何将左连接包含选择转换为codeigniter sql方法 谢谢 我只是想知道 SELECT c1 c1 id c1 c1 name c2 c2 id c2 c2 name c2 c2 type c2 c2 status f f id f
  • Shell 脚本在给定文件夹时打印出文件名[重复]

    这个问题在这里已经有答案了 我正在编写一个 shell 脚本 给定一个文件夹作为命令行参数 它将打印出其中文件 文件夹的名称 bin sh folder 1 for f in folder do echo f done 这仅打印出给定文件夹
  • 如何在seaborn中使用预先计算的平均值、中位数、百分位数等值创建箱线图?

    我想在seaborn或matplotlib中创建一个箱线图 我可以在其中手动输入箱线图的值 而不是从数据集计算这些值 我正在尝试将实际数据与目标值进行比较 因此我想将这些目标显示为箱线图 然后覆盖实际数据点的群图 例如 我有一个具有不同补偿
  • Scala 中的 MapView(<未计算>)

    我开始学习 Scala 但我发现了一个令人困惑的问题map 我的代码是这样的 val mymap Map 1 gt james 2 gt justin println mymap view mapValues x gt hi x print
  • 出于测试目的访问原始装饰函数

    我正在使用装饰器 render to来自django annoying包 在视图函数中 但问题是我想获取视图函数返回的原始字典用于测试目的 而不是HttpResponse装饰器返回的对象 装饰器使用 wraps from functools
  • JavaFX 2 TableView:根据单元格内的数据不同的单元格工厂

    我正在尝试使用表视图来渲染 编辑 键 值 对 因此该表应该有两列 键 和 值 Key只是一个普通的字符串 value可以是任何东西 我的问题是 行与行之间的值的数据类型可能不同 基本上 我想使用布尔值的复选框和列表的选择 我找到了一种通过设
  • 如何在 PyQt 中创建“色环”?

    我想创建一个如下所示的 QWidget QDialog 色环 or Windows 颜色选择器 我知道QColorDialog 但我不想使用它 我知道这是一个老问题但由于唯一的答案性能相当糟糕 这是我的版本 它使用两个叠加的渐变 而不是单独
  • 仅当源级别为 5.0 时注释才可用 语法错误 java

    我正在编译一个普通的java程序 Override注释 我从一些教程中从互联网下载了源代码 现在javac正在抱怨 annotations are only available if source level is 5 0 SO 或其他网站
  • 文本在 li 内垂直对齐

    ul li img src Content img pdf png Catalogue li li img src Content img pdf png Manual Data li li img src Content img pdf
  • Google 应用脚本触发器 ID 格式

    我正在开发 Google 电子表格项目 通过脚本添加 删除基于时间的触发器 所有触发的触发器都将运行一个函数 该函数将检查其 Id 并相应地运行函数 我正在保存启动触发器并使用此代码保存它的 id function startTimer r
  • Altair 中的平行坐标

    我想做一个具有多个 y 轴的平行坐标图 我已经找到了如何在 Vega Lite 中做到这一点here但我还没有找到使用 Altair 的方法 只有一个非常简单的例子其中所有 y 轴都相同 有什么办法吗这个情节在牵牛星 请注意 这种图表不是
  • 真实用户ID、有效用户ID和保存用户ID之间的区别

    我已经知道真实用户ID 它是系统中用户的唯一编号 在我的系统上 我的uid is echo UID 1014 另外两个ID代表什么 以及有什么用有效用户id and 已保存的用户 ID我们在系统中的什么地方使用它们 区分真实用户 ID 和有
  • 在iOS7半透明导航栏中获取正确的颜色

    如何为 iOS 7 中的半透明导航栏获得正确的颜色 导航栏只是将给定的颜色调整为更亮的颜色 更改颜色的亮度或饱和度也无法提供正确的结果 有人有同样的烦恼吗 看看 Facebook 它似乎以某种方式起作用 他们有自己的颜色和半透明的导航栏 编
  • SSIS 循环遍历 Excel 工作表

    我正在使用SSIS2012 我试图将大约25个excel文件 每个文件包含大约70个 变量 表 导入到SQLserver2008中 我已经构建了它 以便它将循环遍历所有 Excel 工作表并导入第一个工作表 但这没有用 我如何循环所有 Ex
  • 将文件直接上传到 GAE 应用的 Google Cloud Storage

    我正在考虑从 Blobstore 切换到 Google Cloud Storage 以处理项目中的图像上传等问题 因为 Google 称 Blobstore 为 取代 在 Blobstore 中 多部分表单将直接提交 上传 到 Blobst
  • 在 ansible playbook 中使用 gitlab-ci vars

    我想使用 Ansible playbook 在 docker 容器内设置远程环境 该剧本将从 gitlab ci 运行 其中包含我在 Gitlab CI CD 配置中设置的变量 我怎样才能做到这一点 这是我想使用的模板 我该如何设置user
  • C 中的常量返回类型

    我正在阅读一些代码示例 它们返回了 const int 当我尝试编译示例代码时 出现了有关返回类型冲突的错误 所以我开始搜索 认为 const 是问题所在 当我删除它时 代码工作正常 不仅可以编译 而且按预期工作 但我从未能够找到专门与 c
  • 查找字符串中长度最大的所有单词

    我想从字符串中找到长度最大的所有单词 目前 结果只是第一个长度最大的 jumped1 而我想要它们全部 jumped1 jumped2 我该如何调整以下内容 function test str var newStr str split va
  • 同步多个 UITableView 实例的滚动位置

    我有一个项目 我需要在其中显示多个UITableViewiPad 上同一视图内的实例 它们也恰好被轮换 但我相当确定这是无关紧要的 用户应该不知道视图是由多个表视图组成的 因此 我想做到这一点 以便当我滚动一个表视图时 其他表视图也会同时滚
  • Hibernate Envers:跟踪 OneToMany 关系拥有方的修订

    我有两个经过审计的实体 A 和 B 实体 A 拥有实体 B 的集合 注释为一对多关系 将 A 的新实例插入数据库时 A 和 B 的所有行都处于同一修订版 假设为修订版 1 然后 A 上有更新 仅影响实体 B 的实例 级联类型为合并 因此 更