我正在使用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;
Run Code Online (Sandbox Code Playgroud)
我还在ORM.XML文件中设置它:
<basic name="firstName">
<column name="FIRST_NAME" insertable="false" updatable="true" nullable="false"/>
</basic>
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,在创建新的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")
Run Code Online (Sandbox Code Playgroud)
这意味着持久性管理器尝试插入第一个名称字段,尽管我告诉它不要.
我在这里做错了吗?
谢谢!