我正在尝试执行以下操作
@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_id
为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
}