当前位置: 首页 > 知识库问答 >
问题:

在spring data jpa中更新和插入查询

翟浩穰
2023-03-14

我正在制作一个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;
}  

共有1个答案

郗欣嘉
2023-03-14

使用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中更新多个表。正在更新使用者表,但提供者表无法更新。相反,它尝试插入导致违反主键,这是预期的,因为它尝试插入而不是更新。虽然我对这两个表的代码流是相同的,但只有生产者有问题。这是我的消费者实体 这是我的消费者存储库 这是我的提供商实体 这是我的提供商存储库 这是日志

  • 问题内容: 假设我使用jQuery将新内容加载到特定的DIV元素中。如果现在我想从该DIV元素内部捕获事件,我认为必须以某种方式更新DOM?处理此问题的最佳方法是什么? 编辑:这是我的意思的示例: 同一级别的文件包含 文件“视图”包含 如果您尝试此操作,则将在您第一次按下Edit时看到该按钮变为View,但之后不再更改。为什么是这样? 问题答案: 像这样使用live: