私は1対多の関係に問題があります。私は抽象クラスArtifact.javaを持っています。これはテーブルにマップされません。これから広がる他の具体的なクラスがあり、それらは異なるテーブルにマップされます。今、別のクラスがテーブルにマップされています。このクラスは、これらのクラスのコレクション、つまりArtifact.java型のコレクションを持つことができます。私はJPAを使ってこれをマップし、以下のようにしなければなりません。Issue @OneToManyと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にマップされています。現在、各成果物は複数のサブアイテム(1対多)を持つことができ、いずれにしても関連しません。だから、私たちは抽象クラスArtifactItem.javaを持っているので、すべてのサブアイテムでこれを拡張することができました。したがって、ArtifactにはArtifactItemのリストがあります。
ArtifactItem.javaで、テーブルにマップされていません。これには、外部キーとして使用されるidとartifactIdという2つの要素が含まれています。 IDは@GeneratedValue(strategy = GenerationType.AUTO)、artifactIdは@ManyToOne(targetEntity = Artifact.class) @JoinColumn(name = "artifact_id"、referencedColumnName = "id")としてマークされています。クラスは@MappedSuperclassとして注釈されています。
ArtifactItemを拡張する多数のサブアイテムがあります。それぞれに独自のテーブルがあります。たとえば、ArtifactType1.javaには独自のフィールドがあり、ArtifactType1テーブルなどにマッピングされます。
ここで、Artifact.javaのリストはArtifactItemのコレクションであるため、ArtifactItemにマップする必要があります。しかし、上記の方法でマップしようとすると、上記の例外が発生します。
希望は、今すぐ明確に:)。
ありがとうございました。 ArtifactItem
上
あなたは、クラス間の関係をより明確にするために、あなたの質問に言い換えることができますか? – axtavt