我对我的实体几乎没有验证 @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() 应该这样做。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top