小编Whi*_*erK的帖子

EJB3 - @Column(insertable ="false")问题

我正在使用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)

这意味着持久性管理器尝试插入第一个名称字段,尽管我告诉它不要.

我在这里做错了吗?

谢谢!

java jpa toplink-essentials ejb-3.0 ora-01400

5
推荐指数
1
解决办法
3738
查看次数

标签 统计

ejb-3.0 ×1

java ×1

jpa ×1

ora-01400 ×1

toplink-essentials ×1