使用JPA,我们可以将枚举定义为实体的ID吗?
我尝试了以下方法:
public enum AssetType {
....
}
@Entity
@IdClass(AssetType.class)
public class Adkeys {
private AssetType type;
@Id
@Enumerated(EnumType.STRING)
@Column(nullable = false)
public AssetType getType() {
return type;
}
}
使用OpenJPA,它提示:
所以我的问题是:
最佳答案
JPA规范没有说这是可能的:
如果您确实想要给定实体具有编译时固定数量的记录,则可以使用String
或int
主键并为其分配AssetType.FOO.name()
或AssetType.FOO.ordinal()
此处的不可移植意味着某些持久性提供程序可能支持其他功能,但可能不适用于其他提供程序。与枚举一样-如果持久性提供程序对此有特殊支持,则它不会尝试实例化它,而是在检查class.isEnum()
之后专门对其进行处理,然后它可能会起作用。但是似乎您的持久性提供程序没有执行此操作。