我有亲子关系。当我时。save
要在标识符相同时插入,我希望它更新。
这是我的服务:
@Override
public MsExplodedDTO saveExplodedFactory(MsExplodedFactoryRequestDTO exploded) {
MsProduct prod = msProductRepo.findByProductCode(exploded.getProductCode())
.orElseThrow(() -> new ResourceNotFound("Data Produk tidak ditemukan!"));
exploded.setProductCode(prod.getId().toString());
MsExploded exp;
if (explodedRepo.findByExplodedCodeIgnoreCase(exploded.getExplodedCode()).size() > 0) {
MsExploded oldExploded = explodedRepo.findByExplodedCode(exploded.getExplodedCode())
.orElseThrow(() -> new ResourceNotFound("Data tidak ditemukan!"));
return updateExplodedFactory(exploded, prod);
}else {
exp = mapper.DTO2Entity(exploded);
exp.setId(0L);
exp.getExplodedDt().forEach(d -> {
d.setExplodedhd(exp);
});
return mapper.entity2DTO(explodedRepo.save(exp));
}
}
@Override
public MsExplodedDTO updateExplodedFactory(MsExplodedFactoryRequestDTO exploded, MsProduct prod) {
MsExploded oldExploded = explodedRepo.findByExplodedCode(exploded.getExplodedCode())
.orElseThrow(() -> new ResourceNotFound("Data tidak ditemukan!"));
if (oldExploded.getIsDeleted()) {
throw new ResourceNotAcceptable("Kode Exploded " + oldExploded.getExplodedCode() + " telah dihapus");
}
oldExploded = mapper.updateDTO2Entity(exploded, oldExploded);
oldExploded.setProduct(prod);
for (MsExplodedDetail exp : oldExploded.getExplodedDt()) {
exp.setExplodedhd(oldExploded);
}
MsExploded obj = explodedRepo.save(oldExploded);
return mapper.entity2DTO(obj);
}
当我调试更新时,它说
错误:“ms\u exploded\u header\u id”列中的null值违反非null约束详细信息:失败行包含(20,333,2,null,null,null,null,null,null,null,null,null)。
虽然我已经按应有的方式插入了存储库,但在保存新存储库时没有问题,但在更新父或子存储库时却没有问题。
这是我的标题实体:
@Data
@Audited
@EntityListeners(AuditingEntityListener.class)
@Entity
@Table(name = "ms_exploded")
@EqualsAndHashCode(callSuper = false, of = "id")
@ToString(of = { "id" })
public class MsExploded extends AuditField implements Serializable {
XX
XX
XX
@OneToMany(mappedBy = "explodedhd", orphanRemoval = true, cascade = CascadeType.ALL)
private List<MsExplodedDetail> explodedDt = new ArrayList<>();
}
这是我的孩子实体:
@Data
@Audited
@EntityListeners(AuditingEntityListener.class)
@Entity
@Table(name = "ms_exploded_detail")
public class MsExplodedDetail implements Serializable {
XX
XX
XX
@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" })
@JsonIgnore
@ManyToOne(targetEntity = MsExploded.class)
@JoinColumn(name = "ms_exploded_header_id", referencedColumnName = "id")
private MsExploded explodedhd;
}
我很确定在调试时,ms\u exploded\u header\u id
与头id一起插入。但我不知道为什么它取消并返回了错误。
确保msexplod。explodedDt和msexplodeDetail。explodedhd始终一致。一、 e.以下断言应成立:
msExploded.explodedDt.forEach(dt -> assertThat(dt.explodedhd).isEqualTo(msExploded);
assertthat(msExplodedDetail.explodedhd).contains(msExplodedDetail)
我怀疑你(或地图绘制者)离开了MsExplodedDetail。在向MSExplod添加细节时,分解DHD。
这是我的代码,但当我尝试插入另一个“analise”时,num\u cedula,num\u doente,data\u analise为NULL,它会给我这个错误(“错误:num\u cedula”列中的NULL值违反了非NULL约束细节:失败的行包含(32,Ortopedia,NULL,NULL,NULL,NULL,2019-12-02,glicemia,176,Instituicao1)。S
问题内容: 我有以下代码: 它尝试创建具有给定ID和电子邮件的用户,如果已经存在一个用户-尝试获取现有记录。 我知道这是一个不好的构造,无论如何都会对其进行重构。但是我的问题是这样的: 我如何确定发生了什么:一种与约束违反有关的(在(user_id,电子邮件)上有唯一键)或一种与约束有关的(不能为null)? 问题答案: psycopg2作为成员提供了例外,它为您提供了相当细粒度的错误信息以进行匹
我在postgresql中创建了一个存储过程,如下所示: 是->的类型 我在插入时得到如下错误:
当我打印申请者的技能列表时,我有以下内容: 下面是一张表格,列出了申请人和技能之间的联系: 但是当我试图保存申请者时,我有这样一个提示:失败的行包含(23,null,null,499)。有人能给我解释一下吗?我正在使用jpa注释开发一个spring应用程序。
堆栈溢出。 和 详细信息:失败行包含(18,Item Name在这里,这是描述,40.00,items/pattern.png,lXBjgo70QIrI8aF,1,null)。 这是完整的回溯 null 提前谢谢你
主要内容:在创建表时设置非空约束,在修改表时添加非空约束,删除非空约束MySQL非空约束(NOT NULL)指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错。可以通过 CREATE TABLE 或 ALTER TABLE 语句实现。在表中某个列的定义后加上关键字 NOT NULL 作为限定词,来约束该列的取值不能为空。 比如,在用户信息表中,如果不添加用户名,那么这条用户信息就是无效的,这时就可以为用户名字段设置非空约