繁体   English   中英

Hibernate中的枚举注释列表

[英]Annotating List of Enums in Hibernate

我在hibernat的Enums列表中有此注释:

@CollectionOfElements(targetElement = SomeType.class)
@JoinTable(name = "table_name",
    joinColumns = @JoinColumn(name = FK_NAME)
)
@Column(name = "someTypeCd", nullable = false)
@LazyCollection(LazyCollectionOption.FALSE)
@GeneratedValue(strategy=GenerationType.AUTO)
@Enumerated(EnumType.STRING)
private List<SomeType> someType;

问题是当我调用搜索查询执行时,它返回以下内容:

java.lang.ClassCastException - java.lang.String cannot be cast to java.lang.Enum

问题在哪里?

当我通过搜索解决方案来到这里时:

@Column
@Enumerated
@ElementCollection(targetClass = MyEnum.class)
private List<MyEnum> values;

为我做了工作。 感谢@ElementCollection的提示,我没有意识到。

您粘贴的片段可能会带来问题,即您使用@Enumerated(EnumType.String)将枚举值描述为String类型。 我认为这会带来强制转换异常。 也许EnumType.Ordinal会适合。 我对此没有经验。 我没有定义任何东西,这很好。

更改@Column定义以包含定义的枚举值,例如

@Column(name="someTypeCd", nullable = false, columnDefinition="enum('VAL1', 'VAL2', 'VAL3', 'UNDEFINED')")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM