saveOrUpdate方法,如果传入的对象有主键就执行更新,没有就执行新增.这句话误导了很多人. 究竟是执行新增还是更新,是要有上下文环境的.这个环境就是主键策略的选择. 主键生成方式为 手动设置:assigned: 设置了主键的值: 执行select * from table_name where id = ? 若可以查到数据,则执行update操作, 如果查不到数据,则执行save操作. 没有设置主键的值: hibernate报错,意思是没有指示主键是多少,hibernate不知道怎么往数