La convalida non funziona su EntityManager.merge ()
-
29-09-2019 - |
Domanda
Ho pochi convalide sulla mia entità, come @NotNull
, e una generazione, come
@Id
@GeneratedValue(strategy = AUTO)
@Column(name = "ID")
private Long id;
@Column
@GeneratedValue(strategy = GenerationType.AUTO)
private Long referenceNumber;
Tuttavia al momento della chiamata EntityManager.merge()
questi valori non sono generati. campi Null con @NotNull
annotazioni sono passati senza lamentarsi. id
Anche non viene generato.
dovrei passare questa generazione in qualche modo? Come e dove?
Soluzione
In aggiunta alla risposta di kraftan:
-
Per la convalida di fagioli automatica predefinita in JPA 2.0 funziona se fornitore di convalida è "presente nell'ambiente", altrimenti non lo fa in silenzio il lavoro. È possibile aggiungere
<validation-mode>CALLBACK</validation-mode>
per
persistence.xml
al fine di generare un errore se fornitore di convalida non viene trovato. - JPA non supporta generazione di arbitrarie (non-id) immobili. Alcuni provider JPA possono avere estensioni .
Altri suggerimenti
Merge()
non lo fa invoke pre-insert / Pre-update listener di eventi per impostazione predefinita. flush()
dopo la merge()
dovrebbe farlo.