当前位置: 首页 > 面试题库 >

JPA和Bean验证的唯一约束

夏骏
2023-03-14
问题内容

我想对@UniqueBean验证有一个限制,但这不是标准提供的。如果我要使用JPA
@UniqueConstraint,则不会有独特的验证和错误报告机制。

有没有一种方法可以定义@Unique为Bean验证约束并将其与JPA结合使用,例如,JPA创建具有唯一约束的列并检查值是否唯一?


问题答案:

除非获得整个表的锁
,否则基本上不可能使用SQL查询来检查唯一性(任何并发事务都可以在手动检查之后但在提交正在进行的事务之前修改数据)。换句话说,不可能在Java级别实现有效的唯一验证,从而无法提供验证实现。唯一性检查的唯一可靠方法是在提交事务时。

BV规范总结如下:

[附录D. Java Persistence

2.0集成](http://people.redhat.com/~ebernard/validation/#appendix-jpa)

问题:我们应该添加将映射到@Column(unique = true)的@Unique吗?

@Unique无法在Java级别上可靠地测试,但是可以生成数据库唯一约束生成。@Unique现在不属于BV规范。

因此,尽管我同意在Bean Validation异常中包含唯一(且非null)约束违例会很好,但目前并非如此。

参考文献

  • Bean验证规范(JSR 303)
    • 附录D. Java Persistence 2.0集成
  • 有关验证和持久性约束的问题


 类似资料:
  • 问题内容: 我正在JPA中对userid列强制执行唯一性约束检查,这是对user表中的所有记录强制执行的。 我的要求是,特定组织内的用户ID必须唯一,而不是在所有组织中都唯一。 如何执行此类检查? 问题答案: 您可以为唯一约束指定多个字段,请尝试: 通过这样做,您的约束条件将检查userid和Organizationid的组合是否唯一。 最好的祝福,费边

  • 问题内容: 有没有一种方法可以使用JPA指定在不同的列集上应该有多个唯一约束? 我已经看到了特定于hibernate的注释,但是由于我们仍在确定hibernate和数据核之间的关系,因此我试图避免使用特定于供应商的解决方案。 问题答案: 所述的属性实际接受的这些阵列。您的示例只是具有单个元素的数组的简写。否则,它看起来像: 只要唯一性约束仅基于一个字段,就可以在该列上使用。

  • 本文向大家介绍yii2 从数据库验证唯一值:唯一验证,包括了yii2 从数据库验证唯一值:唯一验证的使用技巧和注意事项,需要的朋友参考一下 示例 如果输入现有值,某些人会遇到有关无法显示错误消息的问题。例如,我不允许用户使用现有电子邮件进行注册。 视图 控制者 模型            

  • 我一直在尝试改进针对XSD模式的XML验证性能,特别是关于XSD唯一约束的性能,并决定尝试一下Woodstox。我基本上遵循了这个示例,将更改为。 不过,我遇到的问题是,Woodstox验证器会发现XML有效,即使XML违反了唯一约束。将我的java代码切换回“常规”、和时,会正确检测到唯一性约束冲突。 此外,我可以确认Woodstox验证器做了一些事情,因为例如,如果我有一个负数,其中一个正数是

  • JSR303Bean验证包含一些现成的约束,但也允许定义自定义约束。 我有一种感觉,对于许多没有随JSR实现一起提供的项目来说,有很多共同的约束。 日期范围 密码复杂性检查 等于交叉字段验证(堆栈溢出投票最高的'bean验证'问题) ... 所以我的问题是:是否有一个(值得信赖的)库包含commons jsr 303(Bean验证)约束?

  • 我想知道是否有可能将一些自定义类型的新约束验证器注册到Bean验证规范定义的注释中。例如,让我们想象一下,我有一个类,它累加了几个int值 我想注册一个自定义约束验证器来支持这种类型的@正向注释(而不是创建自定义注释)。 这样以后我就可以使用这个: