启动时的 JPA 列默认值

Alo*_*lok 5 annotations jpa

我有一项每天午夜运行的工作,我正在使用 JPA 创建表。我想在每次启动作业时为一列(对于当前数据库中存在的所有行)分配一个默认值,然后在作业期间我将根据某些逻辑为该列分配一个不同的值。

例如:

@Column(name = "delete_YN?")
private String deleteYN = "Y";
//getters setters here
Run Code Online (Sandbox Code Playgroud)

我希望每次作业启动时此列都有一个默认值“Y”(上次运行中插入的每一行在作业开始时应将列值设置为“Y”)并且作业分配值“N”通过某种逻辑到专栏。最后,我将能够看到哪些行具有该列的 Y 值,哪些行具有该列的 N 值。我这样做正确吗?这可以吗还是应该使用columnDefinition注释?这和columnDefinition注释到底有什么区别?

Xst*_*ian 3

@ColumncolumnDefinition 的 JavaDoc

   /**
     * (Optional) The SQL fragment that is used when
     * generating the DDL for the column.
     * <p> Defaults to the generated SQL to create a
     * column of the inferred type.
     */
Run Code Online (Sandbox Code Playgroud)

您应该使用的columnDefinition是(对于Oracle)

@Column(name="delete_YN", columnDefinition="varchar2(1) DEFAULT 'Y'`")
Run Code Online (Sandbox Code Playgroud)

但我认为你的方法更好,因为对于你绑定到 db 的 columnDefinition 。

我建议您也使用这些链接.... link1link2

我希望我已经为您提供了有关您问题的所有答案。