为了账号安全,请及时绑定邮箱和手机立即绑定

JPA persist 在级联子项时插入不正确的 id 值

JPA persist 在级联子项时插入不正确的 id 值

UYOU 2021-06-08 13:08:21
这段代码失败了我在数据库中有一个现有的版本化值,我使用 获取该值entity manager.find并在实体上设置。VersionEntity version = entityManager.find(VersionEntity.class, 1);entities.forEach(__ -> __.setVersion(version));entities.forEach(entityManager::persist);entityManager.flush();我专门查找并分配版本 1,那么为什么它甚至会尝试使用版本 2。我什至尝试过merge,但没有奏效。我的属性显然是错误的/不正确的。刷新失败本地异常堆栈:异常 [EclipseLink-4002](Eclipse 持久性服务 - 2.7.1.qualifier):org.eclipse.persistence.exceptions.DatabaseException 内部异常:org.postgresql.util.PSQLException:错误:插入或更新表“ t_quality_measurement”违反外键约束“fk_t_quality_measurement_version” 详细信息:表“t_version”中不存在键(版本)=(2)。错误代码:0 调用:INSERT INTO T_QUALITY_MEASUREMENT (BRAND, DATE, KPICODE, KPICOMPAREVW, KPICOMPAREWT, KPIVALUE, ORGANISATIONUNIT, PHASE, PLANT, SERIES, SIGNALCOLOR, TECHNOLOGY, TEMPORALUNIT, (?, S?) ?, ?, ?, ?, ?, ?, ?, ?, ?) bind => [14 个参数绑定] 查询:当我专门查找 1 时,我不确定为什么它会尝试使用 2。@Entity@Table(name = "T_QUALITY_MEASUREMENT")public class QualityMeasurementEntity extends Versioned implements Serializable {    @Id    @GeneratedValue(strategy = GenerationType.IDENTITY)    @Column(columnDefinition = "serial")    private Integer id;    @Column(length = 100)    private String series;版本化看起来像这样@MappedSuperclasspublic abstract class Versioned {    @ManyToOne    @JoinColumn(name = "version", insertable = false, updatable = false)    protected VersionEntity version = null;    public VersionEntity getVersion() { return version; }    public void setVersion(VersionEntity version) { this.version = version; }}和版本实体。@Entity@Table(name = "T_VERSION", indexes = {        @Index(name = "pk_version", columnList = "id", unique = true)})@NamedQuery(name = "Version.findById", query = "SELECT v FROM VersionEntity v WHERE v.id = :id")public class VersionEntity {    @Id    @GeneratedValue(strategy = GenerationType.IDENTITY)    @Column(columnDefinition = "serial")    private Integer id;    @Column(name = "CREATED")    private LocalDateTime created;
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 215 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号