Hibernate 如何在休眠向导中保留枚举字符串而不是序号值
我将dropwizard 0.8与hibernate一起用于数据库持久性。当持久化枚举列时,它将以序号值而不是字符串值保存到数据库中。我将Hibernate 如何在休眠向导中保留枚举字符串而不是序号值,hibernate,enums,dropwizard,Hibernate,Enums,Dropwizard,我将dropwizard 0.8与hibernate一起用于数据库持久性。当持久化枚举列时,它将以序号值而不是字符串值保存到数据库中。我将@Enumerated(EnumType.STRING)放在列模型的顶部 这让我觉得dropwizard 0.8根本不支持EnumType.STRING 有什么帮助吗 public enum State { NOTSTARTED, RUNNING, COMPLETE, ABORTING, ABORTED, FAI
@Enumerated(EnumType.STRING)
放在列模型的顶部
这让我觉得dropwizard 0.8根本不支持EnumType.STRING
有什么帮助吗
public enum State {
NOTSTARTED,
RUNNING,
COMPLETE,
ABORTING,
ABORTED,
FAILED;
}
public class Status implements Serializable{
@Column(name="state")
@Enumerated(EnumType.STRING)
private State state;
@Column(name="error")
private String error;
Status() {
}
Status(State state, String error) {
this.state = state;
this.error = error;
}
public State getState() {
return state;
}
public void setState(State state) {
this.state = state;
}
public String getError() {
return error;
}
public void setError(String error) {
this.error = error;
}
}
我使用的是Dropwizard v0.7.1和MySQL v5.5 两个列映射字段上的
@Enumerated(EnumType.STRING)
注释按预期工作(一个字段映射到VARCHAR字段,另一个映射到ENUM)
请尝试以下操作:
- 将Dropwizard降级至v0.7.1
- 将您的
状态设置为
状态的
a类子类
@Entity
@Table(name = "job")
@JsonSerialize(include= JsonSerialize.Inclusion.NON_NULL)
public class Job implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Embedded
@Access(AccessType.PROPERTY)
private Status status;
...
}
谢谢,我还没有尝试将dropwizard降级到v0.7.x,因为我的项目已经有几个地方绑定到了0.8.0,这是由于它本身的依赖性升级。我已经解决了这个问题,正如我在下面发布的那样。