我在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
问题在哪里?
答案 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')")