2010-11-22 63 views
2

给定一个大型应用程序的不同包中的几个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年开始营业,我正在寻找解决方法或完全不同的方法。有任何想法吗?

+0

一个自定义方言可以做的伎俩? – martin 2010-11-24 14:17:52

回答

0

如果这些软件包位于不同的项目模块中,您可以尝试将它们放入不同的模式中。这样他们的表名就可以结束了,你不会在意。只是一个想法。

相关问题