JPA中的@OneToMany和Abstraction问题

时间:2010-12-01 12:39:47

标签: jpa

我遇到一对多关系的问题。我有一个抽象类Artifact.java。这不会映射到表。还有其他具体的类,它们被映射到不同的表。现在我有另一个类,映射到一个表,这个类可以有任何这些类的集合,即Artifact.java类型的集合。我需要使用JPA映射它,并按如下方式进行映射。

@OneToMany(mappedBy="artifactId",targetEntity=Artifact_Item.class,
        fetch=FetchType.EAGER, cascade=CascadeType.ALL)
private List<Artifact_Item> artifactItemList;

这会导致以下异常。

org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: dao.model.Artifact.artifactItemList[dao.model.Artifact_Item]

有谁可以帮我解决这个问题?

感谢。

好的,我正在改写这个问题。 我有一个类Artifact.java,它被映射到表Artifact。现在每个工件可以有多个子项(一对多),无论如何都不相关。因此,我们决定使用一个抽象类ArtifactItem.java,以便所有子项都可以扩展它。因此,Artifact具有ArtifactItems列表。

ArtifactItem.java,并未映射到表。它包含2个元素,一个id和artifactId,用作外键。 Id已标记为@GeneratedValue(strategy = GenerationType.AUTO),artifactId标记为@ManyToOne(targetEntity = Artifact.class)     @JoinColumn(name =“artifact_id”,referencedColumnName =“id”)。该类已注释为@MappedSuperclass。

有许多子项,扩展了ArtifactItem。每个都有自己的表,例如,ArtifactType1.java有自己的字段,并映射到ArtifactType1表,依此类推。

现在,由于Artifact.java的列表需要映射到ArtifactItem,因为列表是ArtifactItems的集合。但是当我尝试以上述方式映射它时,我得到了上面给出的例外。

希望现在更清楚:)。

感谢。

1 个答案:

答案 0 :(得分:1)

@MappedSuperclass上使用ArtifactItem(摆脱下划线)