引起:org.hibernate.AnnotationException:对不同包但名称相同的实体使用相同的实体名称两次

时间:2015-05-27 11:50:43

标签: java hibernate jpa entity

我有两个具有相同名称的实体,但是在不同的包中。对我而言,显然应该有效。实体没有重复的名称。

但是我收到了一个错误:

Caused by: org.hibernate.AnnotationException: Use of the same entity name twice: Variant

我找到了解决方案,告诉我使用字符串值作为@Entity注释的name属性的参数,例如:

@Entity(name="legal_Variant")

但我不想在代码中使用字符串。可以通过其他方式完成吗? F.E.使用java反射,或以某种方式配置JPA使用整个名称(包名称)?

对我来说这很奇怪。我认为JPA也会处理包名。

我的课程代码:

package insurance.models.liability.hiv;
@Entity
@Table(name="lLiability_Part_Hiv_Var")
public class Variant extends GenericDictionary<Variant> {
}

package insurance.models.liability.legal;
@Entity
@Table(name="liability_Part_Legal_Var")
public class Variant extends GenericDictionary<Variant> {}

1 个答案:

答案 0 :(得分:0)

可以在映射文件中完成:

<hibernate-mapping>
    <import class="insurance.models.liability.legal.Variant" rename="Var1" />
</hibernate-mapping>

您现在可以使用HQL查询,例如

from Var1 

参考:Java Persistence with Hibernate (Chapter 4 pag.173/174)