2015-02-06 9 views
6

Avere un campo lungo su un'entità gestita da hibernate potrebbe essere pericoloso con valori null. Quando Hibernate tenta di impostare un valore Null in una primitiva, verrà generata un'eccezione.Evita "Hibernate exception Il valore Null è stato assegnato a una proprietà di tipo primer setter" senza wrapper

La soluzione migliore dovrebbe essere quella di utilizzare Long anziché long, quindi null può essere assegnato a Long field.

Ma, sto lavorando a un progetto in cui non è possibile utilizzare i tipi Long o Integer. Mi chiedo se c'è un modo per sovrascrivere i tipi di ibernazione per usare un metodo nullSafe o qualcosa del genere.

+1

OK, devo solo chiedere ... * Perché * non puoi usare 'Long' e/o' Integer'? –

risposta

-1

Io uso sempre tipi di classe incapsulati, ma se non è possibile è possibile controllare l'entità attributi prima insisto che qualcosa di simile:

if (entity.getAttribute == null){ 
entity.setAttribute(0); //case of long, int... 
} 
+0

sì, sì, ma il problema è sui dati che sono già nel database, quindi non è un'opzione (aggiornare i dati memorizzati non è un'opzione) – ilopezluna

+0

Questo non verrà compilato se il tipo di ritorno di 'entity.getAttribute() 'è' int' o 'long'. Inoltre, il problema che l'OP sta avendo è che la libreria di ibernazione * stessa * sta tentando di chiamare un * setter * con 'null'. –