具有注释的Hibernate字符串主键

sed*_*ran 7 java annotations hibernate primary-key

我正在尝试创建一个带有Annotations的Privilege类,其主键是一个String.我会在插入时手动分配它们.因此,不需要hibernate为它生成值.我正在尝试这样做:

@Id
@GeneratedValue(generator = "assigned")
@Column(name = "ROLE_NAME", nullable = false)
private String roleName;
Run Code Online (Sandbox Code Playgroud)

但它引发了异常:

Caused by: org.hibernate.AnnotationException: Unknown Id.generator: assigned
Run Code Online (Sandbox Code Playgroud)

如何配置String带注释的主键?

JB *_*zet 25

由于roleName不是自动生成的,因此您不应该使用以下方法对其进行注释@GeneratedValue:

@Id
@Column(name = "ROLE_NAME", nullable = false)
private String roleName;
Run Code Online (Sandbox Code Playgroud)


Gop*_*han 6

@Id
@Column(name = "USER_ID",unique=true,columnDefinition="VARCHAR(64)")
private String userId;
Run Code Online (Sandbox Code Playgroud)

通过在保存或更新期间用列注释表示 columnDefinition 类型,这对我有用。