如何使用postgresql在Spring引导中的addScaler()方法中添加枚举值?



我有一个枚举。但是每当我发布它时,我的数据都保存在数据库中作为数字 0,1,2。我不知道这是怎么回事。这就是我向前面展示它的方式:

import org.hibernate.type.StringType;
import org.hibernate.type.EnumType;
SQLQuery query = getCurrentSession().createSQLQuery(sql.toString());
query.addScalar("id", IntegerType.INSTANCE);
query.addScalar("school",EnumType ); // how to call enumtype here?

我的后站控制器:

className.setSchool(SchoolType.FULL); //this is how i'm sending the school value

我的枚举:

public enum SchoolType {
REGULAR("REGULAR"),
FULL("FULL");
private String label;
SchoolType(String label) {
this.label = label;
}
public String getLabel() {
return label;
}
public String getName() {
return name();
}
}

在我的恩尼蒂中这样称呼它:

@Column(name="school")
private SchoolType school;

但问题是不是作为reg或full,数据库得到0或1值。如何解决这个问题?而不是获取值,我得到枚举键作为值。

根据休眠文档,您应该添加@Enumerated注释:

@Enumerated(EnumType.STRING)
@Column(name="school")
private SchoolType school;

如果要将枚举的值存储为枚举值的名称,如java.lang.Enum#name

所示默认情况下,休眠使用ORDINAL映射类型进行枚举,这就是为什么枚举的值存储为序号的原因。

最新更新