Spring jpa列defaultvalue

时间:2015-10-05 15:48:39

标签: spring jpa spring-data

我正在尝试执行以下操作

@ManyToOne
@JoinColumn(name="tier_id", columnDefinition = "INT default 1", nullable = false)
public Tier getTier() {
    return tier;
}

但是在插入记录时我得到了 com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'tier_id' cannot be null

我希望默认tier_id1,如果没有设置,但它不起作用。我该如何正确设置呢?

1 个答案:

答案 0 :(得分:1)

仅当insert语句中根本不存在列时才使用默认SQL值。

但是Hibernate并没有省略insert语句中的列。如果您创建一个具有空层的实体实例并保持它,那么您有效地说Hibernate要保留一个具有空层的实体,并且Hibernate明确地将tier_id列设置为null,因为它'你告诉它要做什么。

因此,如果您希望您的实体层成为ID为1的层,那么请在您的应用程序代码中明确地执行此操作:

  if(sscanf(buffer, "%d | %*[^%|] | %lf | %lf", &id, &ra, &dec)==3){
  /*                      ^ this will read until | is not encountered and then discard it*/
  // do something
 }