【问题标题】:Is there a way to specify the default value for a column in JPA有没有办法为 JPA 中的列指定默认值
【发布时间】:2011-10-17 04:44:24
【问题描述】:
@Entity 
class Foo {

@Column
private String productName;

@column
private Date orderedDate;

@Column
private int numHits;
}

我想指定默认值 productName="Toy" 和 orderedDate="10 days before" 和 numHits 为“5”,以便在 hbm2ddl 期间这些转换为“默认”值并反映在架构中。

我应该使用什么注释,这样我才能以与数据库无关的方式实现这一点(例如,对于 h2、postgres、mysql)

【问题讨论】:

    标签: hibernate jpa


    【解决方案1】:

    因此,如果您想要给定列的默认值,但您对数据库应如何保证这一点的 DDL 详细信息不感兴趣,您也可以简单地将字段初始化为其默认值:

    @Colum(name="emp_salary")
    private double salary = 1500;
    

    这样不行吗?

    【讨论】:

    • 如果有人通过 SQL 填充它,那么同样的限制不成立,因为上面的常量是通过模型修改的
    【解决方案2】:

    不是明确的 JPA 的一部分,尽管您可以将其包含在 @Column 上的“columnDefinition”中(这显然是依赖于数据存储的,所以是一个 hack)。如果您希望使用 JPA 实现数据存储不可知性,则必须依赖供应商的具体信息

    JDO 是唯一明确允许这样做的持久性标准,因此与数据存储无关

    【讨论】:

    • 我知道 columnDefinition,但正如我之前提到的,我更喜欢与数据库无关的解决方案。我不确定在这个阶段我是否能够将我的代码从 JPA 移动到 JDO。
    猜你喜欢
    • 2017-12-05
    • 1970-01-01
    • 2013-07-02
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    相关资源
    最近更新 更多