2017-08-30 54 views
0

我目前正在从旧数据库构建JPA模型,并且需要一些建议。在这个数据库中,ids是从仅有一个名为next_id的PK列的表object_id生成的。每当Java软件使用它创建新对象时,这个next_id就会增加。如何在只有一列的表中创建JPA中的ID生成器

我的目标是使用相同的表格为JPA模型生成ID。这有可能吗?我试图用

@GeneratedValue(strategy = GenerationType.TABLE, generator = "myGenerator") 
@TableGenerator(name = "myGenerator", table = "object_id", valueColumnName = "next_id") 

,但它似乎并没有工作,因为object_id表只有一列(没有序列名称列)。

我有以下限制:

  1. 我谈到以前的软件将被使用,直至其更新 完成。
  2. 这是一个商业软件。其开发和使用必须继续。停止开发和维护是不可能的。
  3. 此更新可能需要至少一年。更新将逐步完成。数据库和用户界面将首先更新。然后计算内核会跟随。
  4. 计算从用户界面在单独的线程中启动。一旦用户界面被更新,相同的计算内核将被调用,直到内核也被更新。
  5. 内核更新完成后,就可以使用其他类型的id代。在此之前,JPA模型中的id代必须像软件所做的那样工作。
  6. 必须以相同的方式创建ID以避免重复键。
  7. 我完全知道,从JPA表生成ID不是最好的选择。但这是传统代码。我必须处理它。

我忘了提及这个软件的开发始于2000年。那时候,没有像Hibernate或JPA这样的工具。持久性工具是从头开发的,现在仍在使用。目标是摆脱它并使用更新的技术。

任何提示?提前致谢。

回答

0

我们有一个情况下,我们不得不保持遗留系统插入记录,并建立一个新的系统将记录插入同一个表,并想使用一个序列发生器新系统。我们只是让新的序列生成器生成负数,这样两者之间就没有碰撞的机会。可能是你的选择?

相关问题