休眠:如何为类型为枚举的列指定@ColumnDefault

时间:2019-07-02 07:13:36

标签: java hibernate spring-boot

我的枚举定义如下:

var c = arrayOfElements.filter(function(){
 return $(this).is(':checked');
})

console.log(c.length)

在我的存储库中:

public enum TRAFFIC_SOURCE {
    IP, CLIENT_ID, MOBILE
}

现在,我想为列指定默认值。我尝试了两种方法,在两种情况下都出错:

@Column(name = "SOURCE")
@NotNull
@Enumerated(EnumType.STRING)
private TRAFFIC_SOURCE source;

强迫我使用

@ColumnDefault(TRAFFIC_SOURCE.IP)
// Error:(26, 43) java: incompatible types: com.myproj.enums.TRAFFIC_SOURCE cannot be converted to java.lang.String

@ColumnDefault(TRAFFIC_SOURCE.IP.name())
// Error:(26, 51) java: element value must be a constant expression

是否可以使用Enum变量作为默认值?

1 个答案:

答案 0 :(得分:2)

由于@ColumnDefault仅将String作为参数,并且批注中的值必须为常量,因此唯一的可能性是使用

@ColumnDefault("IP")

如果不强迫您在表列上使用默认值,并且始终使用JPA插入数据,则可以按照Kapcash的说明初始化字段:

private TRAFFIC_SOURCE source = TRAFFIC_SOURCE.IP;
相关问题