验证在EntityManager.merge()上不起作用
-
29-09-2019 - |
题
我对我的实体几乎没有验证 @NotNull
, 和一些一代,喜欢
@Id
@GeneratedValue(strategy = AUTO)
@Column(name = "ID")
private Long id;
@Column
@GeneratedValue(strategy = GenerationType.AUTO)
private Long referenceNumber;
但是打电话时 EntityManager.merge()
该值未生成。带有空字段 @NotNull
注释通过没有任何抱怨。甚至 id
未生成。
我应该以某种方式切换这一代吗?如何,在哪里?
解决方案
除了Kraftan的答案:
默认情况下,JPA 2.0中的自动BEAN验证如果验证提供商“存在于环境中”,则可以无效。你可以加
<validation-mode>CALLBACK</validation-mode>
到
persistence.xml
为了生成错误,如果找不到验证提供商。- JPA不支持任意(非ID)属性的生成。一些JPA提供商可能有 扩展.
其他提示
Merge()
默认情况下,不会调用预插入/预还原事件的听众。 flush()
之后 merge()
应该这样做。
不隶属于 StackOverflow