2017-08-05 94 views
0

我正在做一个休息API,其中我必须更新一个ID的基础上,并通过弹簧数据在表中插入数据没有ID基地。但我发现在这两种情况下的错误它运行插入查询只更新不工作在弹簧数据更新和插入查询jpa

库文件 @Repository 公共接口CustomerRepository扩展JpaRepository { CustomerEntity保存(CustomerEntity customerEntity); CustomerEntity findById(int id);

存取管理文件

公共CustomerDO创建(CustomerDO customerReqDO){CustomerEntity customerEntity = NULL; CustomerDO customerResDO = new CustomerDO(); (null!= customerReqDO.getId()){customerId = customerRepository.findById(Integer.parseInt(customerReqDO.getId())); 如果(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(来源= “*”) @PostMapping() 公共CustomerResponseDTO寄存器(@RequestBody CustomerUpdateRequestDTO registerRequestDTO){ CustomerDO customerReqDO =新CustomerDO(); CustomerResponseDTO loginResponseDTO = new CustomerResponseDTO(); customerReqDO.setName(registerRequestDTO.getName()); customerReqDO.setEmail(registerRequestDTO.getEmail()); customerReqDO.setPhone(registerRequestDTO.getPhone()); ; customerReqDO.setPassword(registerRequestDTO.getPassword());

CustomerDO customerResDO = customerLoginManagerImpl.insert(customerReqDO); 

    if(null != customerResDO.getError()){ 
     loginResponseDTO.setError(customerResDO.getError()); 
    }else{ 


    loginResponseDTO.setSucess(true); 
} 

    return loginResponseDTO; 
} 
+0

实施经理 – bkumar

+0

公共CustomerDO插入件(CustomerDO customerReqDO) \t { \t \t CustomerDO customerResDO = customerAccessManager.create(customerReqDO); \t \t return customerResDO; \t} – bkumar

+0

我可以知道你在这里期待什么吗?你想知道如何插入和更新sping数据jpa?只需调用JpaRepository的save方法即可。 – Barath

回答

0

从休眠使用标准:

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();