gpt4 book ai didi

java - Spring-JPA-data保存实体UNIQUE INDEX(两列,不是pk)违反不能抛出异常

转载 作者:太空宇宙 更新时间:2023-11-04 11:01:03 26 4
gpt4 key购买 nike

我的java代码是这样的:

public class Monitorlog{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
int id;//pk
String sn; // unique constraints(sn,checkpoint)
String checkpoint;
}

public interface MonitorlogDao extends JpaRepository<Monitorlog, Integer>{}

@Service
public class MonitorlogService{
@Autowired
MonitorlogDao monitorlogDao;
public MonitorlogDao getMonitorlog(){
return monitorlogDao;
}
}

测试是这样的:

    public void testMonitorlogSerivce(){
Monitorlog m = new Monitorlog();
m.setSn("aa");
m.setCheckpoint("bb");
monitorlogService.getMonitorlogDao().save(m);
m = new Monitorlog();
m.setSn("aa");
m.setCheckpoint("bb");
// SQL insert failed here
try{
monitorlogService.getMonitorlogDao().save(m);
}catch(Exception e){
log("",e);
}
}

secode save(m) 失败,它想抛出异常,但没有。m.getId()为0,但没有捕获到异常,为什么?我使用 sprint boot 版本 2.0.0M。唯一索引

CREATE UNIQUE INDEX [IND_IDNO_POSITIONKIND_CHECKPOINT_1] ON 
[dbo].[MONITORLOG] ([CHECKPOINT] DESC, [SN] ASC)
WITH (IGNORE_DUP_KEY = ON)

最佳答案

您在第二次保存时提供的数据违反了 DB 的 PK 和/或 UK 规则。

您始终必须提供符合 PK 和/或 UK(唯一 key )规则的有效数据,以便将代码保留在数据库中。

关于java - Spring-JPA-data保存实体UNIQUE INDEX(两列,不是pk)违反不能抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46887406/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com