Java Hibernate:如何为enum类型的列指定@ColumnDefault

Java Hibernate:如何为enum类型的列指定@ColumnDefault,java,hibernate,spring-boot,Java,Hibernate,Spring Boot,我的枚举定义如下: 公共枚举流量\u源{ IP,客户端ID,移动 } 在我的存储库中: @列(name=“SOURCE”) @NotNull @枚举(EnumType.STRING) 私人交通来源; 现在我想为列指定默认值。我尝试了两种方法,但都出现了错误: @ColumnDefault(流量\u SOURCE.IP) //错误:(26,43)java:不兼容的类型:com.myproj.enums.TRAFFIC\u源无法转换为java.lang.String @ColumnDefault

我的枚举定义如下:

公共枚举流量\u源{
IP,客户端ID,移动
}
在我的存储库中:

@列(name=“SOURCE”)
@NotNull
@枚举(EnumType.STRING)
私人交通来源;
现在我想为列指定默认值。我尝试了两种方法,但都出现了错误:

@ColumnDefault(流量\u SOURCE.IP)
//错误:(26,43)java:不兼容的类型:com.myproj.enums.TRAFFIC\u源无法转换为java.lang.String
@ColumnDefault(流量\源.IP.name())
//错误:(26,51)java:元素值必须是常量表达式
强迫我使用

@ColumnDefault(“IP”)

有没有办法将枚举变量用作默认值?

因为@ColumnDefault只接受字符串作为参数,并且注释中的值必须是常量,所以唯一的可能性是使用

@ColumnDefault("IP")
如果不强制在表列上使用默认值,并且始终使用JPA插入数据,则可以按照Kapcash所述初始化字段:

private TRAFFIC_SOURCE source = TRAFFIC_SOURCE.IP;

是否尝试使用默认需要的枚举值初始化
变量?这样,模型应该在创建对象时用值实例化变量:
private TRAFFIC\u SOURCE=TRAFFIC\u SOURCE.IP