Java JPA/HIBERNATE:值必须是常量

Java JPA/HIBERNATE:值必须是常量,java,hibernate,jakarta-ee,jpa,enums,Java,Hibernate,Jakarta Ee,Jpa,Enums,我有以下情况 public enum TestEnum{ PUUNITONE("puunitone"), PUUNITTWO("puunittwo"); private String name; private TestEnum(String name) { this.name = name; } public String getName() { return name; } } 在EJB@s

我有以下情况

public enum TestEnum{

    PUUNITONE("puunitone"),
    PUUNITTWO("puunittwo");

    private String name;

    private TestEnum(String name) {
        this.name = name;
    }


    public String getName() {
        return name;
    }

}
EJB@stateless
类中

@PersistenceContext(unitName = TestEnum.PUUNITONE.getName())
private EntityManager entityManager;
我有以下几点

Compilation Error: Value must be a constant
现在我的问题是:

1。java中是否有枚举常量?如果是,这里有什么问题?
2.使用枚举作为常量有没有解决此问题的方法或方法?

谢谢你的建议

  • 是的,枚举是常量,但是
    getName()
    不是常量:编译器无法判断它是否总是返回相同的结果
  • 不,您必须在注释中使用一个普通的
    字符串
    或一个
    最终静态字符串
    。只有这些是编译器的常量

  • 您在没有“getName()”的情况下尝试过吗?Oracle docs这样说:“…使变量成为一组预定义的常量”。请参阅此处:。可能是此的副本:@mwhs谢谢您的评论。不幸的是,它不起作用。同样的错误也发生了