0

我正在开发一个 JPA 应用程序,并且我正在使用 eclipse 链接提供程序。

我有一个表 T1,它的字段 F1 定义为非空且具有默认值 ('U')。

我已经定义了一个映射到表 T1 的实体。该实体有一个映射到字段 F1 的属性,并且我已经使用注释 @ReturnInsert(returnOnly = true) 配置了该属性。

文档说:

使用 @ReturnInsert 使 INSERT 操作将值返回到正在写入的对象中

如果我在映射到 F1 的属性中保留一个没有值的实体,则一切正常。插入后实体会自动填充默认值,并在数据库中插入一条记录。

但是,如果我尝试使用不同的值(无默认值)持久化一个实体,则会将一条记录插入到数据库中,但字段 F1 的值是默认值,它应该是我在实体中设置的值。

为什么会这样?我想要的只是更改默认值。

谢谢

4

1 回答 1

0

我为数据库中的字段设置默认值所做的是:

  1. 为数据库中的该字段定义默认值
  2. 将实体中的相应属性设为只读。

例如对于日期字段,您可以这样做:

在数据库中:

reg_date    DATE NOT NULL DEFAULT CURRENT_DATE  

在实体中:

@Basic(optional=false)
@Temporal(TemporalType.DATE)
@Column(name = "reg_date", insertable= false)
private Date regDate;

通过这样做,我得到了一个在插入新字段时始终由数据库自动设置的字段。

于 2013-11-08T11:27:39.550 回答