使用Open JPA的持久性;将复合主键设置为主实体的Id属性

时间:2019-02-12 02:24:10

标签: jpa websphere persistence ejb-3.0 openjpa

服务器-IBM WAS 8.5 打开JPA 2.2.3

我正在尝试使用实体管理器执行容器管理的持久性。

我定义了以下三个实体

  • 实体 MainEntity ID为MainEntityPK
  • MainEntityPK -具有SubEntity1表中的SubEntity1Code和SubEntity2表中的SubEntity2Code。
  • 实体 SubEntity1 -SubEntity1Code-主键
  • 实体 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实例设置为MainEntity的id属性时出了什么问题吗

0 个答案:

没有答案