У меня проблема с отношениями один-ко-многим.У меня есть абстрактный класс 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, чтобы все подпункты могли расширять его.Таким образом, Артефакт имеет Список ArtifactItems.
ArtifactItem.java и не отображается в таблице.Он содержит 2 элемента, id и и artifactId, используемые в качестве внешнего ключа.Идентификатор был помечен как @GeneratedValue (стратегии = GenerationType.AUTO), а artifactId - как @ManyToOne (targetEntity = Artifact.class) @JoinColumn (name = "artifact_id", referencedColumnName = "id").И этот класс был аннотирован как @ MappedSuperclass.
Существует множество подпунктов, расширяющих ArtifactItem.Каждый имеет свою собственную таблицу, например, ArtifactType1.java имеет свои собственные поля и сопоставляется с таблицей ArtifactType1 и так далее.
Теперь, поскольку список Artifact.java должен быть сопоставлен с ArtifactItem, так как список представляет собой коллекцию ArtifactItems.Но когда я пытаюсь отобразить его в порядке, указанном выше, я получаю исключение, указанное выше.
Надеюсь, теперь оно стало понятнее:).
Спасибо.