特定于Hibernate NamingStrategy的软件包

时间:2010-11-22 13:44:03

标签: hibernate naming

在大型应用程序的不同包中给出了几个Hibernate实体,我想确保没有命名冲突。例如。包foo中可能有Person - 实体,而包裹栏中可能有另一个Person - 实体。

现在这两个实体应该映射到这样的表名:

foo.Person --> FOO_PERSON
bar.Person --> BAR_PERSON

我可以使用@ Table-annotation来实现这个目标:

@Table(name="FOO_PERSON")
public class Person ...

@Table(name="BAR_PERSON")
public class Person ...

但是,我想使用某种NamingStrategy,它会自动执行此操作。 Hibernate提供了接口org.hibernate.cfg.NamingStrategy。我尝试扩展DefaultNamingStrategy,但是(尽管文档另有说明),您只能获得该类的非限定名称,因此没有关于包名称的信息。

有关此问题的JIRA问题(http://opensource.atlassian.com/projects/hibernate/browse/HHH-4312)。鉴于它自2007年开放以来,我正在寻找一种解决方法或完全不同的方法。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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