2016-03-23 17 views
7

Posso usare Opzionale nei campi dell'entità di ibernazione? Forse con qualche tipo di utente personalizzato?Java 8 Opzionale nel campo Entità

So che posso usarlo nei metodi che usano AccesType.FIELD (io uso AccesType.FIELD comunque).

Perché lo voglio? Bene, voglio stare il più lontano possibile dai nulla.

risposta

1

Non si deve utilizzare Optional come campo in una classe (o per uso Hibernate o meno).

Come indicato dallo Javadoc, è una classe basata sui valori, quindi non serializzabile e l'uso dell'uguaglianza di riferimento (==) e dell'hashcode dell'identità ha risultati imprevedibili.

Invece, è possibile memorizzare un'istanza della classe di destinazione (null è ok nei database relazionali) e restituire un Optional da accessors (non il getter, che Hibernates si aspetta di restituire la stessa classe del campo, se ricordo bene).

Spero che questo possa essere d'aiuto.

+0

Cosa è imprevedibile riguardo alle implementazioni di equazioni e hashCode di Optional? Sembrano avere un contratto chiaro e fermo nel Javadoc al quale si collega. –

+0

Ci scusiamo per il collegamento. Non intendevo equals e hashcode, ma == e identità hashcode. Grazie per la correzione. – cdelmas

Problemi correlati