Estoy construyendo una aplicación J2SE con EJB3 y una base de datos Oracle Express Edition.EJB3 - @Column (insertable = "false") pregunta
Mi problema es el siguiente: configuré un EntityBean en mi proyecto que coincide con una tabla en el DB. La tabla contiene una columna que no admite nulos y tiene un valor predeterminado . Todo lo que quiero es que cuando persista una nueva información en esta tabla usando el EJB, el valor de la columna obtenga su valor predeterminado. Así es como lo fijo en el proyecto:
//holds user's first name
@Basic(optional = true)
@Column(name = "FIRST_NAME", insertable = false, updatable = true, nullable = false)
private String m_firstName;
también lo fijo en el archivo ORM.XML:
<basic name="firstName">
<column name="FIRST_NAME" insertable="false" updatable="true" nullable="false"/>
</basic>
Pero por alguna razón, cuando se crea un nuevo EntityBean y no se establece el nombre de campo, y luego tratar de persistir, me sale la siguiente excepción:
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")
lo que significa que el gestor de persistencia intenta insertar el primer campo de nombre aunque me dijeron que no lo hiciera.
¿Estoy haciendo algo mal aquí?
Gracias!