我需要能够获得一个序列号(我不介意这一代中是否有漏洞),我认为一个SQL序列将是完美匹配。用休眠支持的JPA2创建一个序列
我正在使用Play框架,它使用由hibernate支持的JPA2。
我现在的问题是,我似乎无法让Hibernate生成序列作为应用程序启动时自动ddl更新的一部分。
关于使用@SequenceGenerator的每条文档似乎都与实体标识相关,而不是如何定义独立于实体标识的序列。
谢谢。
编辑:只是为了给这个问题更多的上下文,我正在做的是实施一项服务,以保持高分,第一次玩家开始游戏,它会问服务器的访客帐户。
访客帐户的用户名采用播放器+数字形式,如“player123123”,其中数字将从我尝试使用的序列中生成。
当用户注册时,他可以将用户名更改为自定义的用户名,但不能以玩家+任何形式进行更改,以便名称空间玩家+号码可以免费用于访客帐户。编辑2:现在我通过定义一个永远不会被使用的额外的无用实体,并使用来自该实体的序列,但它是一个丑陋的黑客攻击。
为我的具体问题忽略可能的解决方案(黑客攻击),我想知道hibernate和jpa2是否有可能声明额外的(不是用于id生成的)序列与某个实体关联或独立于任何实体并让hibernate自动在数据库中创建它们。
恕我直言,自动ddl更新是很有用的,当启动一个快速n'肮脏的项目。一旦成熟,您应该拥有SQL脚本来在启动应用程序之前自动创建模式。把这个序列创建指令放在这个脚本中。 – 2012-02-08 08:19:36
现在我处于项目的快速和肮脏的阶段,所以我现在不想手动维护额外的SQL脚本,现在是时候把它投入生产了,我会这样做。 – 2012-02-08 15:52:14
在数据库中明确创建序列。 Hibernate不会知道它,所以它的自动DDL生成不会删除它。 – 2012-02-08 17:06:13