Je construis une application J2SE avec EJB3 et une base de données Oracle Express Edition.EJB3 - @Column (insérable = "false") question
Mon problème est comme ça - Je définis un EntityBean dans mon projet qui correspond à une table dans la base de données. La table contient une colonne qui n'est pas Nullable et a une valeur par défaut . Tout ce que je veux, c'est que lors de la persistance d'une nouvelle donnée à cette table en utilisant l'EJB, la valeur de la colonne aura sa valeur par défaut. Voici comment je l'ai mis dans le projet:
//holds user's first name
@Basic(optional = true)
@Column(name = "FIRST_NAME", insertable = false, updatable = true, nullable = false)
private String m_firstName;
Je l'ai mis aussi dans le fichier orm.xml:
<basic name="firstName">
<column name="FIRST_NAME" insertable="false" updatable="true" nullable="false"/>
</basic>
Mais pour une raison quelconque, lors de la création d'une nouvelle EntityBean et ne fixant pas la première nom du champ, puis essayer de persister, je reçois l'exception suivante:
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")
ce qui signifie que le gestionnaire de persistance tente d'insérer le premier champ de nom mais je dis que ce ne pas.
Est-ce que je fais quelque chose de mal ici?
Merci!