La validation ne fonctionne pas sur EntityManager.merge ()
-
29-09-2019 - |
Question
J'ai peu sur mon entité de validation, comme @NotNull
, et une génération, comme
@Id
@GeneratedValue(strategy = AUTO)
@Column(name = "ID")
private Long id;
@Column
@GeneratedValue(strategy = GenerationType.AUTO)
private Long referenceNumber;
Cependant lors de l'appel EntityManager.merge()
ces valeurs ne sont pas générées. champs NULL avec annotation @NotNull
sont passés sans se plaindre. Même id
n'est pas généré.
devrais-je changer cette génération sur une certaine façon? Comment et où?
La solution
En plus de la réponse de kraftan:
-
Par défaut validation de haricot automatique JPA 2.0 fonctionne si le fournisseur de validation est « présent dans l'environnement », sinon il ne silencieusement fonctionne pas. Vous pouvez ajouter
<validation-mode>CALLBACK</validation-mode>
à
persistence.xml
afin de générer une erreur si le fournisseur de validation est introuvable. - JPA ne supporte pas la génération de propriétés arbitraires (non-ID). Certains fournisseurs de JPA peuvent avoir extensions .
Autres conseils
Merge()
ne Invoke événement pré-insertion / pré-mise à jour des auditeurs par défaut. flush()
après la merge()
devrait le faire.