Hibernate GenerationType.IDENTITY和字符串序列

时间:2012-07-12 17:11:37

标签: hibernate

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

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

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

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

@GeneratedValue(strategy=GenerationType.IDENTITY)

谢谢, 杰森

1 个答案:

答案 0 :(得分:1)

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

要确保的一件事是可以使用JDBC api(PreparedStatement.getGeneratedKeys)获取生成的id。这个page详细了解了它的工作原理。