我的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 ver 2.0.0M。 独特的指数
CREATE UNIQUE INDEX [IND_IDNO_POSITIONKIND_CHECKPOINT_1] ON
[dbo].[MONITORLOG] ([CHECKPOINT] DESC, [SN] ASC)
WITH (IGNORE_DUP_KEY = ON)
答案 0 :(得分:0)
您提供的第二次保存数据违反了数据库的PK和/或UK规则。
您必须提供符合PK和/或UK(唯一密钥)规则的有效数据,以便在代码中保留DB。