2011-10-12 66 views
1

我在使用JPA批注映射遗留数据库模式时遇到了问题。JPA-休眠 - 从Select语句生成的ID值

的架构使用一个表来生成最在数据库中的表的唯一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。我知道我可以通过使用'选择'id生成器在纯Hibernate中完成此操作(除非我只是梦想起来) - 任何人都可以推荐使用JPA批注处理此问题的最佳方法吗?

感谢

回答

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

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

+0

谢谢! - 希望每个表格不要超过一列 –

1

TableGenerator有类似的功能,但不完全是。不支持column_name和block_size。也许你可以扩展该发生器来照顾它。

+0

希望我不需要使用这些字段.. –