Sto costruendo un'applicazione J2SE con EJB3 e un DB Oracle Express Edition.EJB3 - @Column (insertable = "false") domanda
Il mio problema è così: ho impostato un oggetto EntityBean nel mio progetto che corrisponde a una tabella nel DB. La tabella contiene una colonna che non è annullabile e ha un valore predefinito . Tutto quello che voglio è che quando si persistono nuovi dati in questa tabella usando l'EJB, il valore della colonna avrà il suo valore predefinito. Ecco come ho impostato nel progetto:
//holds user's first name
@Basic(optional = true)
@Column(name = "FIRST_NAME", insertable = false, updatable = true, nullable = false)
private String m_firstName;
Ho anche impostato nel file orm.xml:
<basic name="firstName">
<column name="FIRST_NAME" insertable="false" updatable="true" nullable="false"/>
</basic>
Ma per qualche ragione, quando si crea un nuovo EntityBean e non fissando il primo nome campo, e poi cercando di persistere, ottengo la seguente eccezione:
Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.1 (Build b60e-fcs (12/23/2008))): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: ORA-01400: cannot insert NULL into ("TSDB"."USERS"."FIRST_NAME")
il che significa che il gestore di persistenza tenta di inserire il primo campo del nome, anche se ho detto che non.
Sto facendo qualcosa di sbagliato qui?
Grazie!