Hibernate @MapsId不';无法使用shared@EmbeddedId
我这里有以下场景: 一个活动包含许多用户。每个用户都由活动id、用户id及其分支机构标识。映射如下:Hibernate @MapsId不';无法使用shared@EmbeddedId,hibernate,java-8,jpa-2.0,java-ee-7,payara,Hibernate,Java 8,Jpa 2.0,Java Ee 7,Payara,我这里有以下场景: 一个活动包含许多用户。每个用户都由活动id、用户id及其分支机构标识。映射如下: @实体 公课运动{ @身份证 私有整数id; @OneToMany(mappedBy=“活动”,cascade=ALL) 私有集usersByCampaign; } UserByCampaign类的定义如下: @实体 公共类UserByCampaign{ @嵌入ID 私有userbypkid; @MapsId(“用户ID”) @许多酮 @JoinColumn(name=“FK_USER”,re
@实体
公课运动{
@身份证
私有整数id;
@OneToMany(mappedBy=“活动”,cascade=ALL)
私有集usersByCampaign;
}
UserByCampaign
类的定义如下:
@实体
公共类UserByCampaign{
@嵌入ID
私有userbypkid;
@MapsId(“用户ID”)
@许多酮
@JoinColumn(name=“FK_USER”,referencedColumnName=“ID”)
私人用户;
@MapsId(“活动ID”)
@许多酮
@JoinColumn(name=“FK_活动”,referencedColumnName=“ID”)
私人竞选活动;
私人字符串分支;
@可嵌入
公共静态类UserByCampaignPk实现可序列化{
私有整数用户标识;
私有整数ID;
}
}
以及用户
类:
@实体
公共类用户{
@身份证
私有整数id;
@OneToMany(mappedBy=“用户”)
私有集usersByCampaign;
}
当然,我已经抑制了代码的其余部分,使其简短。
每次我试图用一堆用户持久化一个活动对象时,它都会抛出一个异常,试图插入一个新用户。不用说,异常堆栈表示违反了用户表唯一约束
INFO: Hibernate: select SEQ_CAMPAIGN.nextval from dual
INFO: Hibernate: insert into CAMPAIGN (...)
INFO: Hibernate: insert into USER (STATUS, ID) values (?, ?)
WARN: SQL Error: 1, SQLState: 23000
ERROR: ORA-00001: unique constraint (SYS_C0083506) violated
INFO: HHH000010: On release of batch it still contained JDBC statements
WARNING: DTX5014: Caught exception in beforeCompletion() callback:
删除@MapsId
注释,并将@ManyToOne
映射设置为insertable=false
和updateable=false
,这两种映射都可以根据需要工作
我正在使用JavaSE8、JavaEE7和Payara4.1运行一个基于maven的web应用程序
编辑:
我用Hibernate4.3运行它,但它在更新到5.2.10.Final之后也会发生