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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top