EJB3 と Oracle Express Edition DB を使用して J2SE アプリケーションを構築しています。
私の問題はそのようなものです-DBのテーブルと一致するプロジェクトにEntityBeanを設定しました。テーブルには、NULL 可能ではなく、デフォルト値を持つ列が含まれています。私が望むのは、EJB を使用してこのテーブルに新しいデータを永続化するときに、列の値がデフォルト値になることだけです。これは私がプロジェクトで設定する方法です:
//holds user's first name
@Basic(optional = true)
@Column(name = "FIRST_NAME", insertable = false, updatable = true, nullable = false)
private String m_firstName;
ORM.XML ファイルにも設定します。
<basic name="firstName">
<column name="FIRST_NAME" insertable="false" updatable="true" nullable="false"/>
</basic>
しかし、何らかの理由で、新しい EntityBean を作成し、名フィールドを設定せずにそれを永続化しようとすると、次の例外が発生します。
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")
これは、私がそうしないように指示したにもかかわらず、永続化マネージャーが名フィールドを挿入しようとすることを意味します。
ここで何か間違っていますか?
ありがとう!