我对Enum值的映射有疑问。 在我的Bonus.class中,我具有枚举属性Type和枚举类BonusType。 这就是我定义枚举类的方式(只是枚举定义,没有复制任何方法或构造函数):
public enum EavType
{
WORLDWIDE ("WORLDWIDE"),
SIMPLE ("SIMPLE"),
NOTVALID ("0");
}
到目前为止,一切都很好。就我从数据库中获得类型为“ WORLDWIDE”或“ SIMPLE”的Bonus元素而言,没有问题,但是当我在类型= 0的数据库上获得Bonus时,我得到一个错误:
Exception: java.lang.IllegalArgumentException: Unknown name value [0] for enum class [com.bosch.gam.commons.bo.remuneration.BonusType]
问题是我无法设置NOTVALID类型的保存方式,从数据库获取的数据是从另一个接口创建的,它们只是将其另存为0。我还应该澄清一下Bonus表中的Type列是一个VARCHAR2。
现在我的问题是:休眠将0解释为数字吗?我该如何解决?
答案 0 :(得分:1)
如果不能使用AttributeConverters(baeldung jpa attribute converters),则可以在bean中使用相同的方法。 在您的“奖励”课程中:
此解决方案使您可以根据需要调整值,而不会破坏应用程序的其他可以继续使用枚举的层。