【问题标题】:Issue With @OneToMany and Abstraction in JPAJPA 中的 @OneToMany 和抽象问题
【发布时间】:2011-05-18 11:43:21
【问题描述】:

我遇到了一对多关系的问题。我有一个抽象类 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 的集合。但是当我尝试以上述方式映射它时,我得到了上面给出的异常。

希望现在更清楚:)。

谢谢。

【问题讨论】:

  • 您能否重新表述您的问题以使您的班级之间的关系更加清晰?

标签: jpa


【解决方案1】:

ArtifactItem 上使用@MappedSuperclass(去掉下划线)

【讨论】:

  • 嘿,伙计,@MappedSuperclass 已添加到该类中 :(.
  • 我也重命名了这个类,我的错:)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-25
  • 1970-01-01
  • 1970-01-01
  • 2016-11-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多