我在使用JPA注释映射旧数据库架构时遇到问题。
模式使用表为db中的大多数表生成唯一ID - 它的结构为:
table_name
column_name
next_id
block_size
要获取记录插入的新唯一ID,请运行如下选项:
SELECT next_id FROM tbl_next_id WHERE table_name = 'tbl_pets' and column_name = 'pet_id'
urrgh。我知道我可以通过使用'select'id生成器在纯粹的休眠中做到这一点(除非我只是想到了这一点) - 有人能推荐使用JPA注释处理这个问题的最佳方法吗?
由于
答案 0 :(得分:1)
TableGenerator做了类似的事情,但并不完全相同。不支持column_name和block_size。也许你可以扩展那个生成器来处理它。
答案 1 :(得分:1)
没有什么比这更好了:
@TableGenerator(name="petsgen",
table="tbl_next_id",
pkColumnName="table_name",
pkColumnValue="tbl_pets",
valueColumnName="next_id",
allocationSize=1
)
@Id
@GeneratedValue(strategy=GenerationType.TABLE, generator="petsgen")
当然不支持表名+列名的组合,但只要表只有一个生成器就可以工作。