2017-08-05 98 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();