禁用合并/更新的 Hibernate 验证

2023-12-27

我有一个 POJO 叫Order如下:

public class Order {

    @Id
    @GeneratedValue
    @Column(name="id")
    protected int id;

    @NotNull
    @Future
    protected Date desiredProcessingDate;

    protected Date actualProcessingDate;
}

正如您所看到的,必须指定desiredProcessingDate,并且它必须是将来的日期。用户将通过表单提交新订单并指定desiredProcessingDate,正在按预期进行验证。然后订单通过以下方式保存到数据库中sessionFactory.getCurrentSession().persist(order);

稍后,预定的服务将从数据库中检索订单,对其进行处理并标记actualProcessingDate与当前时间戳。

但是,当该服务调用时sessionFactory.getCurrentSession().merge(order);验证再次启动并失败,因为desiredProcessingDate现在已经成为过去。

看来我需要做的就是告诉merge(order)操作不进行验证,但我不确定如何执行此操作。

如果这是不可能的,那么似乎唯一的解决办法就是编写一个类级自定义验证器,它只检查desiredProcessingDate是在未来如果actualProcessingDate == null,对于看似简单的需求来说,这似乎过于复杂。任何指示将不胜感激。


JPA 中的验证行为可以使用属性进行配置javax.persistence.validation.group.pre-persist, javax.persistence.validation.group.pre-update and javax.persistence.validation.group.pre-remove。这些属性的值是一个逗号分隔的验证组的完全限定类名列表,用于每个给定的 JPA 生命周期事件,例如:

<property name="javax.persistence.validation.group.pre-persist" value="javax.validation.groups.Default,com.acme.PrePersist"/>    
<property name="javax.persistence.validation.group.pre-update" value="javax.validation.groups.Default"/>

作为解决你的问题的方法是添加@Future对“PrePersist”组的约束,在这种情况下,它仅在持久时验证,而不在更新时验证。

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

禁用合并/更新的 Hibernate 验证 的相关文章

随机推荐

  • C#中通过名称获取变量

    有没有一种方法可以通过知道变量的名称来获取变量的值 如下所示 double temp double MyClass GetValue VariableName 当我通常像这样访问变量时 double temp MyClass Variabl
  • Windows 窗体的 BackgroundWorker 替代品

    是否可以在 Windows 窗体应用程序中执行类似的操作 我正在尝试寻找其他更新 UI 的方法 而不是一直使用 BackgroundWorker 也许是这样的 public List
  • 从 JAVA 应用程序使用 SSL 连接到 MongoDb

    我有一个MongoDb实例运行 单实例 SSL已启用 我可以通过以下方式连接到它RoboMongo在哪里SSL选项卡我提供以下内容 CA File path to my certificate testCA pem PEM certific
  • C# 中的多页打印文档

    请有人帮助我 我必须在 C 中打印多页文档 我通过互联网然后使用了这段代码但不起作用 打印一页后循环再次开始 private void printDocument1 PrintPage object sender System Drawin
  • 为什么当另一个线程正在运行时 NSTimer 会被阻塞?

    我正在尝试在 iPhone 上的后台运行一项冗长的任务 我开始它performSelectorInBackground 我还创建了一个NSTimer在主线程上只是为了检查事情是否正常 我预计计时器会在另一个线程执行该操作时运行 void v
  • 重写 DeviseController 基类 - Rails 4、Devise 3

    我正在尝试重写设计方法set flash message https github com plataformatec devise blob master app controllers devise controller rb L145
  • Javascript 替换左括号和右括号

    例如 我有一串文本 text1 text2 text3 我想用 替换 字符 用 替换 字符 但仅在这种情况下 当 后面跟着 时 例如 text1 text2 text3 应该导致 text1 text2 text3 如何使用 Javascr
  • 线性布局中按钮的边距

    我正在创建一些按钮并将它们添加到线性布局中 其定义为
  • 如何从自己的类调用扩展方法而不进行强制转换?

    我正在尝试打电话扩展方法在我自己的课程上 但无法编译 考虑以下代码行 public interface IHelloWorld public static class Extensions public static string Hell
  • 我可以将字符串转换为 C# 中的资源位置吗?

    好的 初学者刚刚开始学习编程 尝试用 C 做一些东西 本质上 我有一个字符串 string resourcename example 足够方便的是 我还有一个名为 example jpg 的资源 现在我尝试使用字符串 resourcenam
  • 如何将字符串与前导和尾随条件以及匹配组进行匹配

    我想匹配字符串 USER 前面或后面没有其他引用 我可以对尾随引号使用负前瞻 但无法弄清楚如何实现负后瞻 有了这个字符串 4 NULL AND 3 NULL AND 7 NULL 它应该只匹配第一个 NULL 这是我提出的正则表达式 NUL
  • Android WifiManager 和扫描电池性能

    据我了解 人们可以请求 WifiManager 启动 AP 扫描 这很好 您会收到扫描结果 但我的问题是关于幕后发生的连续 wifi 扫描 除了取消注册用于扫描回调的 wifi 侦听器之外 禁用 wifi 是阻止硬件扫描的唯一方法吗 那么
  • Allure:目标文件夹中的环境文件在 Maven clean 上被删除。如何在每次构建时生成它?

    说明说将environment xml添加到Allure结果目录 https github com allure framework allure core wiki Environment https github com allure
  • 在 __init__() python 中打开文件

    嘿我有以下问题 我需要打开一个文件 init 与check函数我需要检查该文件的行中的字符串 数字是否相同 如果不是 它应该返回True如果是的话它应该返回False 如果没有更多的行None 我不知道文件中有多少行 我的代码工作正常 测试
  • 以编程方式将 WXS 构建到 MSI 中

    我会尽力将其讲清楚 但如果您有疑问或不完全理解 请告诉我 我有一个程序可以从头开始创建 WXS WiX 源代码文件 并对其进行测试以确保其有效 我希望下一个自动步骤是使用 Visual Studio 实际构建 WXS 我正在使用 VS 20
  • 获取 ant.design 表列中另一列的值?

    在我的反应和蚂蚁设计 https ant design 基于应用程序 我有一个包含以下列的表格 const tableColumns title Lorem dataIndex lorem render text gt a href tex
  • 用于 SEO 的最佳 HTML5 语义文章和部分?

    这个问题与文章部分和旁白标签有关 因为它与最佳 SEO 实践相关 我见过一些教程教导您应该放置文章标签并在文章标签内放置各种部分标签 然而 我读过的一些书却有相反的方式 放置部分并嵌套在其中是文章标签 为了获得最佳 SEO 结果 这两种方法
  • Blazor 服务器:仅在某些页面上加载 js 脚本,而不是在所有页面上加载 js 脚本

    建议在 Host cshtml 中加载 JS 库 而不是在布局中 也不要在不允许的组件中 但是这样做 怎么可能为一个页面加载一些脚本而为另一个页面加载一些脚本呢 例如 我只想要谷歌地图的东西或数据表的东西只在我使用它们的页面中 而不是全部
  • MySql:设置重复列的限制

    好的 我的桌子上有一个名为 style number 的列 style number 可以有重复项 我想选择所有内容 但每个款式编号最多只能选择 3 个 例如 如果有 4 行的 style number style 7 则只会选择这 4 行
  • 禁用合并/更新的 Hibernate 验证

    我有一个 POJO 叫Order如下 public class Order Id GeneratedValue Column name id protected int id NotNull Future protected Date de