很多情况下需要指定主键:
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "assigned" )
@Id
@Column(name = "org_id")
private String orgId; // 组织机构ID
但是JPA在这种情况下有个问题,不管数据库里有没有数据,一律执行的是update操作
不是想象中没有则插入!
@GeneratedValue (generator = "system-uuid")
@GenericGenerator (name = "system-uuid", strategy = "uuid.hex")
这种更坑爹,当数据库里没有手工设的orgId时,会执行插入操作,但插入的是uuid,不是设定的值!
要想插入指定主键,需要自行处理:
@Transactional
public void saveAttRestOfWeekBO(AttRestOfWeekBO bo) {
if (attRestOfWeekDAO.existsById(bo.getOrgId())) { // 存在则更新
attRestOfWeekDAO.save(bo);
}
else{
entityManager.merge(bo);
}
}