【发布时间】:2012-11-23 19:53:17
【问题描述】:
我将枚举类型的一个字段用于 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 Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.ValidationException 异常描述:实体类 [class com.sim.entities.Joueur] 上属性 [temperament] 的类型 [class com.sim.basics.enums.Temperament] 不是枚举映射的有效类型。该属性必须定义为 Java 枚举。
但这只是复制/粘贴...
为什么会有这种行为?
谢谢
【问题讨论】:
-
您是否将枚举放在单独的 lib.jar 中?
-
确实如此。它在 EAR 中与 maven 一起打包,我的实体及其枚举类型不在同一个 JAR 中。我将在同一个 JAR 中进行测试。感谢这个想法
-
当包含枚举的 .jar 对实体不可见时,我最终得到了完全相同的症状
-
这是问题的原因,当我将我的枚举移动到与我的实体相同的 JAR 中时,它可以工作...是否有解决方法将我的枚举保留在实体 JAR 之外?泰
-
在 entity.jar 的 meta-inf/manifest 中,我必须添加类路径:enum.jar。有点脏,但不知道另一种方式。不在 pppphone 上时添加正确的答案