2012-07-12 65 views
0

由于在传统数据库模式之上实现Spring Security的一些问题,我们的用户标识需要由序列生成,但存储为VARCHAR(9)。所以,我们将在数据库端进行转换,以使代码端(序列/触发器/等)不可见。休眠GenerationType.IDENTITY和字符串序列

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

由于现场将通过触发器来填充,我能映射一个GenerationType.IDENTITY:

不过,据我所知,这会如果通过GenerationType.SEQUENCE这样映射炸毁?

@GeneratedValue(strategy=GenerationType.IDENTITY) 

感谢, 杰森

+1

你试过了吗? – gkamal 2012-07-12 17:14:18

+0

我无法尝试,因为我们的DBA没有对我们的开发模式进行必要的更改。因此我问这个问题。 – Jason 2012-07-12 17:18:23

回答

1

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

要确保的一件事就是可以使用JDBC API(PreparedStatement.getGeneratedKeys)获取生成的ID。这page有更多的细节需要什么使其工作。