我正在使用 EJB3 和 Oracle Express Edition DB 构建 J2SE 应用程序。
我的问题就是这样 - 我在我的项目中设置了一个与数据库中的表匹配的 EntityBean。该表包含一个不可为空且具有默认值的列。我想要的是,当使用 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")
这意味着持久性管理器尝试插入名字字段,尽管我告诉它不要。
我在这里做错了吗?
谢谢!