我将一个枚举类型字段用于 JPA 实体:
@Enumerated(value=EnumType.STRING)
private Temperament temperament = Temperament.MINEUR_PUR;
我的枚举在我的实体内声明:
@Entity
public class Joueur implements Serializable {
.....
public enum Temperament{
MINEUR_PUR(30),
MINEUR(10),
NEUTRE(0),
RAIDEUR(-10),
RAIDEUR_PUR(-30);
private int temperament_prod_mines;
private Temperament(int temperament_prod_mines){
this.temperament_prod_mines = temperament_prod_mines;
}
public int getTemperament_prod_mines() {
return temperament_prod_mines;
}
public void setTemperament_prod_mines(int temperament_prod_mines) {
this.temperament_prod_mines = temperament_prod_mines;
}
}
}
它可以工作,但是当我在它自己的文件中“外部化”我的枚举时,它不再工作:
原因:异常 [EclipseLink-7151](Eclipse 持久性服务 - 2.3.2.v20111125-r10461):org.eclipse.persistence.exceptions.ValidationException
异常描述:实体类 [class com.sim.entities.Joueur] 上属性 [temperament] 的类型 [class com.sim.basics.enums.Temperament] 不是枚举映射的有效类型。该属性必须定义为 Java 枚举。
但这只是复制/粘贴...
为什么会有这种行为?
Thanks
导致此问题的原因之一是实体在运行时未在类路径上找到 enum.jar 中定义的枚举。
至少有两种方法可以解决这个问题。
-
在entity.jar的META-INF/MANIFEST.MH中
类路径:enum.jar
或者如果您使用 maven,则将 enum.jar 指定为 EAR 的一部分。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)