3

我对我的实体的验证很少,比如@NotNull,还有一些代,比如

@Id
@GeneratedValue(strategy = AUTO)
@Column(name = "ID")
private Long id;

@Column
@GeneratedValue(strategy = GenerationType.AUTO)
private Long referenceNumber;

但是,在调用EntityManager.merge()此值时不会生成。@NotNull带有注释的空字段被传递而没有任何抱怨。偶数id不生成。

我应该以某种方式打开这一代吗?如何,在哪里?

4

2 回答 2

6

Merge()默认情况下不调用预插入/预更新事件侦听器。flush()之后merge()应该这样做。

于 2010-12-01T15:56:48.930 回答
1

除了克拉夫坦的回答:

  • 默认情况下,如果验证提供程序“存在于环境中”,JPA 2.0 中的自动 bean 验证会起作用,否则它会默默地不起作用。你可以加

    <validation-mode>CALLBACK</validation-mode>
    

    为了persistence.xml在未找到验证提供程序时生成错误。

  • JPA 不支持生成任意(非 id)属性。一些 JPA 提供者可能有扩展
于 2010-12-01T16:25:33.807 回答