在Hibernate中注释枚举列表

时间:2012-01-19 20:48:59

标签: java hibernate java-ee enums annotations

我在hibernate中有这个注释列表的枚举:

@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

问题在哪里?

2 个答案:

答案 0 :(得分:4)

当我来到这里寻找解决方案时:

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

为我做了这份工作。感谢@ElementCollection的提示我不知道。

您粘贴的snippped可能会带来问题,您将枚举值描述为String @Enumerated(EnumType.String)类型。我引用了这个引入异常。也许EnumType.Ordinal会适合。我对此并不熟悉。我没有定义任何东西,我很好。

答案 1 :(得分:0)

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

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