0

由于在遗留数据库模式之上实现 Spring Security 存在一些问题,我们的用户 ID 需要由序列生成,但存储为 VARCHAR(9)。因此,我们将在数据库端进行转换,以使其对代码端(序列/触发器/等)不可见。

但是,据我所知,如果像这样通过 GenerationType.SEQUENCE 映射,这将爆炸:

@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="MYGENERATOR")

由于该字段将通过触发器填充,我可以使用 GenerationType.IDENTITY 进行映射吗?

@GeneratedValue(strategy=GenerationType.IDENTITY)

谢谢,杰森

4

1 回答 1

1

这可能会奏效。您可以将标识符字段的类型设置为 String 并使用 GenerationType.IDENTITY 策略。

要确保的一件事是可以使用 JDBC api (PreparedStatement.getGeneratedKeys) 获取生成的 id。此页面包含有关使其工作所需的更多详细信息。

于 2012-07-12T17:35:08.427 回答