将实体映射到动态表名称

时间:2012-07-08 07:34:00

标签: hibernate mapping

我想创建一个带有动态表名的数据源的hibernate映射。这些表反映了遗留工具从另一个源提取的数据集,而表名本身包含有关表中数据的元信息。每个请求的表名都会改变。

是否可以在休眠状态下映射?我正在考虑一些临时拦截器改变表名的事情,但是不能真正地绕过最好的方法来做这件事。


编辑12/07/12

..我可能应该提到只读访问就是我所需要的。表格代表“报告”数据,因此永远不应更改。

1 个答案:

答案 0 :(得分:1)

动态表名称对于hibernate来说并不那么容易,因为sessionfactory是不可变的。您需要每次都建立一个新的sessionfactory。根据用例,我会看到几个选项:

  • readonly:使用带有固定列别名的sqlquery并使用AliasToBean
  • r * ead write: *使用xml映射模板并在每个请求上建立一个新的sessionfactory(可能很慢)
  • 如果可能的话,表名在启动时已知:为每个表名生成一个映射,并使用entityname来区分在运行时使用哪个