Постоянство с использованием Open JPA; установка составного первичного ключа в атрибут Id основного объекта - PullRequest
0 голосов
/ 12 февраля 2019

Сервер - IBM WAS 8.5 Open JPA 2.2.3

Я пытаюсь выполнить персистентность, управляемую контейнером, с помощью диспетчера сущностей.

У меня определены следующие три сущности

  • Сущность MainEntity Имеет идентификатор типа MainEntityPK
  • MainEntityPK - имеет SubEntity1Code из таблицы SubEntity1 и SubEntity2Code из таблицы SubEntity2.
  • Entity SubEntity1 - SubEntity1Code - первичный ключ
  • Entity SubEntity2 - SubEntity2Code - первичный ключ

Я пытаюсьсоздать сущность MainEntity, которая имеет существующие записи SubEntity1 и SubEntity2

Сначала я нахожу сущности SubEntity1 и Seg, используя

SubEntity1 SubEntity1 = 
Entitymanager.find(SubEntity1.class,SubEntity1Code)

SubEntity2 subEntity2 = 
Entitymanager.find(SubEntity2.class,SubEntity2Code)

Выборка прошла успешно, и у меня есть оба экземпляра subEntity1и subEntity2

Теперь я пытаюсь установить первичный ключ MainEntityPK следующим образом

MainEntityPK MainEntityPK = new 
MainEntityPK(SubEntity1Code,SubEntity2Code);

MainEntity MainEntity = new MainEntity();
MainEntity.setId(MainEntityPK); 

Я получаю следующую ошибку:

Caused by: <openjpa-2.2.3-SNAPSHOT-r422266:1802534 nonfatal user error> org.apache.openjpa.persistence.ArgumentException
: Field: “model.MainEntity.id” of “model.MainEntity@e8df5623” can not be set to “model.MainEntityPK@1768a2” value.

Я попытался удалить вызов setId иполучала ошибку следующим образом:

Caused by: <openjpa-2.2.3-SNAPSHOT-r422266:1802534 nonfatal user error> org.apache.openjpa.persistence.ArgumentException
: Field: “model.MainEntity.id” od “model.MainEntity@e8df5623” can not be set to null value.

Может кто-нибудь помочь мне определить, что не так при установке экземпляра MainEntityPK в атрибут id для MainEntity

...