软件包特定的Hibernate NamingStrategy
问题描述:
给定一个大型应用程序的不同包中的几个Hibernate实体,我喜欢确保没有命名冲突。例如。可能会有一个Person
-fut包和另一个Person
-Entity在包栏中。软件包特定的Hibernate NamingStrategy
现在,这两个实体应该映射到表名是这样的:
foo.Person --> FOO_PERSON bar.Person --> BAR_PERSON
我可以使用@表的注释来实现这一目标:
@Table(name="FOO_PERSON")
public class Person ...
@Table(name="BAR_PERSON")
public class Person ...
不过,我想使用某种NamingStrategy,它会自动执行此操作。休眠提供了接口org.hibernate.cfg.NamingStrategy
。我试图扩展DefaultNamingStrategy
,但是(尽管文档中另有说明),您只会得到该类的非限定名称,因此不会提供有关程序包名称的信息。
有关于这个问题的JIRA问题(http://opensource.atlassian.com/projects/hibernate/browse/HHH-4312)。鉴于它自2007年开始营业,我正在寻找解决方法或完全不同的方法。有任何想法吗?
答
如果这些软件包位于不同的项目模块中,您可以尝试将它们放入不同的模式中。这样他们的表名就可以结束了,你不会在意。只是一个想法。
一个自定义方言可以做的伎俩? – martin 2010-11-24 14:17:52