Проблема с @OneToMany и абстракцией в JPA - PullRequest
0 голосов
/ 01 декабря 2010

У меня проблема с отношениями один-ко-многим.У меня есть абстрактный класс 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.Но когда я пытаюсь отобразить его в порядке, указанном выше, я получаю исключение, указанное выше.

Надеюсь, теперь оно стало понятнее:).

Спасибо.

1 Ответ

1 голос
/ 01 декабря 2010

Используйте @MappedSuperclass на ArtifactItem (избавьтесь от подчеркивания)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...