gpt4 book ai didi

java - JPA 和枚举类型

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:20:05 25 4
gpt4 key购买 nike

我为 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;
}
}
}

它可以工作,但是当我在它自己的文件中“外部化”我的枚举时,它就不再工作了:

Caused by: Exception [EclipseLink-7151] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.ValidationException Exception Description: The type [class com.sim.basics.enums.Temperament] for the attribute [temperament] on the entity class [class com.sim.entities.Joueur] is not a valid type for an enumerated mapping. The attribute must be defined as a Java enum.

但这只是一个复制/粘贴...

为什么会出现这种行为?

谢谢

最佳答案

此问题的一个原因是 enum.jar 中定义的枚举在运行时未被实体在类路径中找到。

至少有两种方法可以解决这个问题。

  1. 在entity.jar的META-INF/MANIFEST.MH中

    类路径:enum.jar

  2. 或者如果您使用 maven,则将 enum.jar 指定为 EAR 的一部分。

关于java - JPA 和枚举类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13526760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com