J'ai un problème avec la relation un-à-plusieurs. J'ai une classe abstraite Artifact.java. Ce n'est pas mappé à une table. Il existe d'autres classes concrètes s'étendant à partir de cela, et elles sont mappées à différentes tables. Maintenant, j'ai une autre classe, mappée à une table, et cette classe peut avoir une collection de n'importe laquelle de ces classes, c'est-à-dire une collection de type Artifact.java. J'ai besoin de cartographier cela en utilisant JPA, et l'ai fait comme suit.Problème avec @OneToMany et Abstraction dans JPA
@OneToMany(mappedBy="artifactId",targetEntity=Artifact_Item.class,
fetch=FetchType.EAGER, cascade=CascadeType.ALL)
private List<Artifact_Item> artifactItemList;
Cela entraîne l'exception suivante.
org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: dao.model.Artifact.artifactItemList[dao.model.Artifact_Item]
Quelqu'un peut-il s'il vous plaît m'aider à résoudre ce problème?
Merci.
D'accord, je reformule la question. J'ai une classe, Artifact.java, qui est mappée à la table Artifact. Maintenant, chaque artefact peut avoir plusieurs sous-éléments (un-à-plusieurs), qui ne sont pas liés de toute façon. Nous avons donc décidé d'avoir une classe abstraite ArtifactItem.java, de sorte que tous les sous-éléments puissent l'étendre. Ainsi, Artifact a List of ArtifactItems. ArtifactItem.java et n'est pas mappé à la table.
Cela contient 2 éléments, un id et et artifactId, utilisé comme clé étrangère. L'ID a été marqué comme @GeneratedValue (strategy = GenerationType.AUTO) et artifactId comme @ManyToOne (targetEntity = Artifact.class) @JoinColumn (name = "artefact_id", referencedColumnName = "id"). Et la classe a été annotée comme @MappedSuperclass.
Il existe de nombreux sous-éléments qui étendent ArtifactItem. Chacun a sa propre table, par exemple, ArtifactType1.java a ses propres champs et est mappé à la table ArtifactType1 et ainsi de suite.
Maintenant, puisque la liste de Artifact.java doit être mappée à ArtifactItem, car la liste est une collection d'ArtifactItems. Mais quand j'essaie de le mapper de la manière mentionnée ci-dessus, je reçois l'exception donnée ci-dessus.
Espérons que c'est plus clair maintenant :).
Merci.
Pouvez-vous reformuler votre question pour faire rapport entre vos classes plus clair? – axtavt