在大型应用程序的不同包中给出了几个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年开放以来,我正在寻找一种解决方法或完全不同的方法。有什么想法吗?
答案 0 :(得分:0)
如果这些包位于不同的项目模块中,您可以尝试将它们放在不同的模式中。这样他们的表名可能会一样,你不会在乎。只是一个想法。