saveOrUpdate方法,如果传入的对象有主键就执行更新,没有就执行新增。这句话误导了很多人。

  究竟是执行新增还是更新,是要有上下文环境的。这个环境就是主键策略的选择。

  主键生成方式为 手动设置:assigned:

    设置了主键的值:

       执行select * from table_name where id = ?  

      若可以查到数据,则执行update操作,

      如果查不到数据,则执行save操作。

    没有设置主键的值:

      hibernate报错,意思是没有指示主键是多少,hibernate不知道怎么往数据库插入。

  主键生成方式为 自动生成:identity:

    如果该对象设置了主键的值:

        执行update操作

      若数据库表中有匹配该id的数据,修改成功。

      若数据库表中没有匹配该id的数据,hibernate报错。

    如果该对象不存在标识属性:

    执行save 操作,自动生成主键,插入该数据进入数据库。

相关文章:

  • 2022-12-23
  • 2021-11-05
  • 2022-12-23
  • 2021-07-02
  • 2022-01-04
  • 2021-11-13
  • 2022-01-11
  • 2021-12-10
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-02
  • 2022-12-23
  • 2021-05-31
  • 2022-12-23
相关资源
相似解决方案