2010-12-01 27 views
0

我遇到了一對多關係的問題。我有一個抽象類Artifact.java。這沒有映射到表格。還有其他具體的類從這個擴展,並且它們映射到不同的表。現在我有另一個類,映射到一個表,並且此類可以包含任何這些類的集合,即類型爲Artifact.java的集合。我需要使用JPA來映射它,並按如下所示完成它。JPO中的@OneToMany和抽象問題

@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和and 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的集合。但是當我試圖用上面提到的方式來映射它時,我得到了上面給出的例外。

希望它更清晰:)。

謝謝。

+0

你能不能改一下你的問題,讓您的類之間的關係更加清楚了嗎? – axtavt 2010-12-01 12:57:06

回答

1

使用@MappedSuperclassArtifactItem(擺脫下劃線)

+0

嘿隊友,@MappedSuperclass已被添加到該類:(。 – Raj 2010-12-01 13:16:24