使用saveOrUpdate产生的sql一直是update
MutionHu opened this issue · comments
MutionHu commented
版本:1.8.8
实体类主键使用自增:
@Data
@Table(value = "sys_test")
public class SysTestEntity {
@Id(keyType = KeyType.Auto)
private Long id;
@Column(value = "NAME")
private String name;
}
实体类主键使用None:
@Data
@Table(value = "sys_test_2")
public class SysTest2Entity {
@Id(keyType = KeyType.None)
private String id;
@Column(value = "NAME")
private String name;
}
测试:
@Test
void saveOrUpdate() {
SysTestEntity testEntity = new SysTestEntity();
//testEntity.setId(1L);
testEntity.setName("test aaa");
sysTestService.saveOrUpdate(testEntity);
SysTest2Entity test2Entity = new SysTest2Entity();
test2Entity.setId("aaa");
test2Entity.setName("aaa test");
sysTest2Service.saveOrUpdate(test2Entity);
}
控制台打印的SQL:
INSERT INTO
sys_test(
NAME) VALUES ('test aaa')
UPDATE
sys_test_2SET
NAME= 'aaa test' WHERE
id= 'aaa'
MutionHu commented
自增主键也有问题,当设置ID为一个不存在的值时,SQL还是执行的UPDATE语句
SysTestEntity testEntity = new SysTestEntity();
testEntity.setId(2L);
testEntity.setName("test aaa");
sysTestService.saveOrUpdate(testEntity);
soulbug commented
底层逻辑是设置了主键就是更新,未设置主键就是insert