具有注释的Hibernate字符串主键

时间:2014-04-22 13:30:29

标签: java hibernate annotations primary-key

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

@Id
@GeneratedValue(generator = "assigned")
@Column(name = "ROLE_NAME", nullable = false)
private String roleName;

但它引发了异常:

Caused by: org.hibernate.AnnotationException: Unknown Id.generator: assigned

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

3 个答案:

答案 0 :(得分:24)

由于roleName未自动生成,因此您不应仅使用@GeneratedValue对其进行注释:

@Id
@Column(name = "ROLE_NAME", nullable = false)
private String roleName;

答案 1 :(得分:4)

只需使用@Id注释,即可以定义哪个属性是实体的标识符。您不需要使用@GeneratedValue注释,因为我认为您不希望hibernate为您生成此属性。

即使在基于XML配置的方法中,它也是一个可选标记,可以跳过。

答案 2 :(得分:4)

@Id
@Column(name = "USER_ID",unique=true,columnDefinition="VARCHAR(64)")
private String userId;

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