我正在制作一个rest api,其中我必须根据id进行更新,并通过spring data在表中插入没有id基础的数据。但我发现在这两种情况下都有一个错误,它运行插入查询,只有更新不工作
存储库文件@repository公共接口CustomerRepository扩展JpaRepository{CustomerEntity save(CustomerEntity CustomerEntity);CustomerEntity findById(int id);
public CustomerDO create(CustomerDO customerReqDO){CustomerEntity CustomerEntity=null;CustomerDO customerresdo=new CustomerDO();if(null!=customerReqDO.getid()){CustomerEntity=customerReqDO.findbyid(integer.parseint(customerReqDO.getid()));if(null!=CustomerEntity){
if(null != customerReqDO.getName())
customerEntity.setName(customerReqDO.getName());
if(null != customerReqDO.getPhone())
customerEntity.setPhone(customerReqDO.getPhone());
if(null != customerReqDO.getEmail())
customerEntity.setEmail(customerReqDO.getEmail());
if(null != customerReqDO.getPassword())
customerEntity.setPassword(customerReqDO.getPassword());
//if(null !=customerReqDO.getCredits())
//customerReqEntity.setCredits(customerReqDO.getCredits());
customerEntity =customerRepository.save(customerEntity);
}else{
customerResDO.setError("Invalid Customer id "+customerReqDO.getId());
}}else{
customerEntity=new CustomerEntity();
customerEntity.setName(customerReqDO.getName());
customerEntity.setPhone(customerReqDO.getPhone());
customerEntity.setEmail(customerReqDO.getEmail());
//customerReqEntity.setFacebookID(customerReqDO.getFacebookID());
customerEntity.setPassword(customerReqDO.getPassword());
//customerReqEntity.setCredits(customerReqDO.getCredits());
customerEntity =customerRepository.save(customerEntity);
}if(null != customerEntity){
customerResDO.setId(String.valueOf(customerEntity.getId()));
customerResDO.setName(customerEntity.getName());
customerResDO.setPhone(customerEntity.getPhone());
customerResDO.setEmail(customerEntity.getEmail());
customerResDO.setPassword(customerEntity.getPassword());
//deliveryLocationResponseDO.setDeliverytimes(Arrays.asList(deliveryLocationEntity.getDeliverytimes()));
}
return customerResDO;
}
controller
@crossorigin(corigins=“*”)@postmapping()public CustomerResponseDTO register(@requestbody customuptaterequestdto registerRequestDTO){CustomerDO customerReqDO=new CustomerDO();CustomerResponseDTO loginResponseDTO=new CustomerDO();customerReqDO loginResponseDTO();customerReqDO.setname(registerRequestDTO.getname()
CustomerDO customerResDO = customerLoginManagerImpl.insert(customerReqDO);
if(null != customerResDO.getError()){
loginResponseDTO.setError(customerResDO.getError());
}else{
loginResponseDTO.setSucess(true);
}
return loginResponseDTO;
}
使用Hibernate中的条件:
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
String query= "update TableName c set c.attribute= :newAttribute where c.id=:id";
int updatedEntities = s.createQuery( query )
.setString( "newAttribute ", newAttribute )
.setString( "id", id)
.executeUpdate();
tx.commit();
session.close();
问题内容: 在我的tempTBL上,我的linksTBL上有ID,名称,URL,猫,被插入的列TBL我的类别上的ID:名称,别名列在TBL上我在extraTBL上有:cl_id,link_id,cat_id我有:id,link_id,值 我如何执行单个查询以从tempTBL中选择isinsrted = 0的所有项目,然后将它们插入linksTBL并为插入的每个记录选择拾取ID(主要的),然后将该I
我在更新和插入查询之间的应用程序中遇到了死锁,我无法理解为什么以导致死锁的方式给出锁。 null 插入- null
问题内容: 我有这样的简单表: 我想更新哪里的行,但是如果没有行我想更新的行: 仅可能进行一次查询吗? 问题答案: 你可以利用 列上应该有UNIQUE索引 SQLFiddle
问题内容: 在hibernateHBM文件中,设置以下属性的目的是什么? 他们的目的是什么?它们对性能有何影响?我们什么时候应该使用它们? 问题答案: 从文档中: 更新,插入(可选-默认为true):指定映射的列应包含在SQL UPDATE和/或INSERT语句中。将两者都设置为false将允许使用纯的“派生”属性,其值是通过映射到同一列的其他某个属性或触发器或其他应用程序初始化的。
我试图在spring jpa中更新多个表。正在更新使用者表,但提供者表无法更新。相反,它尝试插入导致违反主键,这是预期的,因为它尝试插入而不是更新。虽然我对这两个表的代码流是相同的,但只有生产者有问题。这是我的消费者实体 这是我的消费者存储库 这是我的提供商实体 这是我的提供商存储库 这是日志
是否有“首选”方法可供使用?还是有一种情况应该用在另一种上? 太感谢了!