[英]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.