我对我的实体进行的验证很少,例如@NotNull
和某些代,例如
@Id
@GeneratedValue(strategy = AUTO)
@Column(name = "ID")
private Long id;
@Column
@GeneratedValue(strategy = GenerationType.AUTO)
private Long referenceNumber;
但是,在调用EntityManager.merge()
时,不会生成此值。带有@NotNull
注释的空字段无需任何投诉即可通过。即使id
也未生成。
我应该以某种方式切换这一代吗?怎么样,在哪里?
答案 0 :(得分:6)
Merge()
不会调用pre-insert / pre-update事件侦听器。 flush()
之后的merge()
应该这样做。
答案 1 :(得分:1)
除了卡夫丹的回答:
默认情况下,如果验证提供程序“存在于环境中”,JPA 2.0中的自动Bean验证将起作用,否则它将无法正常工作。你可以添加
<validation-mode>CALLBACK</validation-mode>
到persistence.xml
,以便在找不到验证提供程序时生成错误。