JPA- Hibernate - 从Select语句生成的ID值

时间:2011-10-12 17:15:40

标签: java hibernate jpa

我在使用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注释处理这个问题的最佳方法吗?

由于

2 个答案:

答案 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")

当然不支持表名+列名的组合,但只要表只有一个生成器就可以工作。