【问题标题】:How to set default database values如何设置默认数据库值
【发布时间】:2015-02-20 01:35:28
【问题描述】:

我正在尝试如下设置默认数据库值,但我得到:

错误:Caused by: java.lang.NullPointerException 用于:

@Column(name = "dateOfBirth", insertable = false, updatable = false, nullable=false, columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
@Temporal(javax.persistence.TemporalType.DATE)
private Date dateOfBirth;

和...

错误:Caused by: java.lang.NumberFormatException: For input string: "" 用于:

@Column(name = "zip", insertable = false, updatable = false, nullable=false, columnDefinition = "bigint(20) default 0")
private long zip;

Datelong 设置默认值的正确方法是什么?

【问题讨论】:

  • 如何诊断:将注释缩减为仅一个条目,然后逐个添加它们,直到出现异常。这至少会告诉你哪个条款让你胃痛。
  • 直接在数据库定义中设置默认值比较容易

标签: java mysql hibernate jpa hibernate-mapping


【解决方案1】:

在这两种情况下,您都需要删除此属性:

nullable=true

当数据库将获得 NULL 值时,它将应用 DEFAULT。

【讨论】:

    【解决方案2】:

    如何在 Java 代码中使用默认值初始化属性:

    @Column(name = "dateOfBirth", insertable = false, updatable = false, nullable=false, columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dateOfBirth = new Date(); // or however you like to initialize this value.
    

    @Column(name = "zip", insertable = false, updatable = false, nullable=false, columnDefinition = "bigint(20) default 0")
    private long zip = 1001L;
    

    【讨论】:

      猜你喜欢
      • 2017-02-18
      • 2021-11-19
      • 2016-01-02
      • 2015-06-28
      • 1970-01-01
      • 2021-10-30
      • 2012-02-25
      • 2014-07-15
      • 1970-01-01
      相关资源
      最近更新 更多