Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 验证不需要';无法在EntityManager.merge()上工作_Java_Validation_Jpa_Jakarta Ee_Bean Validation - Fatal编程技术网

Java 验证不需要';无法在EntityManager.merge()上工作

Java 验证不需要';无法在EntityManager.merge()上工作,java,validation,jpa,jakarta-ee,bean-validation,Java,Validation,Jpa,Jakarta Ee,Bean Validation,我的实体上几乎没有验证,比如@NotNull,还有一些生成,比如 @Id @GeneratedValue(strategy = AUTO) @Column(name = "ID") private Long id; @Column @GeneratedValue(strategy = GenerationType.AUTO) private Long referenceNumber; 但是,调用EntityManager.merge()时,不会生成此值。带有@NotNull注释的空字段将在没

我的实体上几乎没有验证,比如
@NotNull
,还有一些生成,比如

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

@Column
@GeneratedValue(strategy = GenerationType.AUTO)
private Long referenceNumber;
但是,调用
EntityManager.merge()时,不会生成此值。带有
@NotNull
注释的空字段将在没有任何抱怨的情况下传递。甚至不生成
id


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

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

除了卡夫坦的答案外:

  • 默认情况下,如果验证提供程序“存在于环境中”,JPA2.0中的自动bean验证就可以工作,否则它就不能静默地工作。你可以加上

    <validation-mode>CALLBACK</validation-mode>
    
    回调
    
    如果找不到验证提供程序,则执行
    persistence.xml
    ,以生成错误

  • JPA不支持生成任意(非id)属性。一些JPA提供商可能有

我可以确认这一点。谢谢是否指定了此功能?您抱怨了两种行为。一个是
id生成
,另一个是
merge()上的bean验证
@axtavt回答了关于前者的问题,@kraftan回答了关于后者的问题。我投了卡夫坦的票。