您的映射是错误的,因为您尝试对奇异属性使用collection。根据JPA规范(请参见 6.2.1.1规范元模型 部分):
对于
zclass声明的每个持久性具有集合值的属性X,其中元素类型z为Z,元模型类必须包含如下声明:
- 如果的收集类型
z为java.util.Set,则public static volatile SetAttribute<X, Z> z;
但是,Hibernate所期待的,你会使用
@ElementCollection,
@OneToMany或
@ManyToMany协会收集属性。
我建议您对自定义类型使用一些包装器类:
public class StringSet { private Set<String> stringSet; // ...}public class StringSetConverter implements AttributeConverter<StringSet, String> { @Override public String convertToDatabaseColumn(StringSet stringSet) { // ... } @Override public StringSet convertToEntityAttribute(String dbString) { // ... }}@Column(name = "GRANTED_PRIVILEGES", nullable = false, length = 4000)@Convert(converter = StringSetConverter.class)private StringSet grantedPrivileges;


