我找到了一个有这个主题的论坛。 Using enum as id
但我无法确定我能否做到。我认为我的情况有点不同。
enum Type {
}
class MyEntityId {
String type;
String key;
}
@Entity
@IdClass(MyEntityId.class)
class MyEntity {
@Enumerated(EnumType.String)
@Id
Type type;
@Id
String key;
}
这是否符合规范? 如果是,我可以不担心供应商的具体行为吗?
答案 0 :(得分:2)
为什么不阅读链接的问题?它引用了规范(2.1.4)并且说不,你不能有枚举类型的id字段;你有一些(无效的)IdClass并不重要(因为IdClass的类型必须匹配类的类型)。所以它不是JPA规范的一部分,所以你留下了特定于供应商的行为。
答案 1 :(得分:1)
在Hibernate 4中,您可以在@Id
中使用枚举作为IdClass
,但仅作为序数使用。添加枚举的任何@Convert
标记都将被忽略。
您可以使用@EmbeddedId
来获得相同的效果
@Embeddable
class MyEntityId {
@Enumerated(EnumType.String)
Type type;
String key;
}
@Entity
class MyEntity {
@EmbeddedId
MyEntityId id;
}