枚举的 JPA 地图集合

新手上路,请多包涵

JPA 中有没有一种方法可以在 Entity 类中映射 Enums 的集合?或者唯一的解决方案是用另一个域类包装 Enum 并使用它来映射集合?

 @Entity
public class Person {
    public enum InterestsEnum {Books, Sport, etc...  }
    //@???
    Collection<InterestsEnum> interests;
}

我正在使用 Hibernate JPA 实现,但当然更喜欢与实现无关的解决方案。

原文由 Gennady Shumakher 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 718
2 个回答

使用 Hibernate 你可以做

@ElementCollection(targetElement = InterestsEnum.class)
@JoinTable(name = "tblInterests", joinColumns = @JoinColumn(name = "personID"))
@Column(name = "interest", nullable = false)
@Enumerated(EnumType.STRING)
Collection<InterestsEnum> interests;

原文由 ant 发布,翻译遵循 CC BY-SA 4.0 许可协议

Andy 的回答中的链接是映射 JPA 2 中“非实体”对象集合的一个很好的起点,但在映射枚举方面还不够完整。这是我想出的。

 @Entity
public class Person {
    @ElementCollection(targetClass=InterestsEnum.class)
    @Enumerated(EnumType.STRING) // Possibly optional (I'm not sure) but defaults to ORDINAL.
    @CollectionTable(name="person_interest")
    @Column(name="interest") // Column name in person_interest
    Collection<InterestsEnum> interests;
}

原文由 spaaarky21 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题