session.save()返回值问题
正常都应该返回插入的主键
但是
如果你用sessionFactory来写就一定返回0
先科普下持久化数据库的三个状态方便下面理解
一次会话状态中,持久化对象经历以下三种状态:
1 transient:对象不与数据库中任意数据相关联。(也就是主键上面没有值)
2 persistent:对象与数据库中的数据关联,包含持久标识,Hibernate保证对象持久标识与数据库主键一致。
3 detached(脱管、游离状态)
因为
使用getCurrentSession来创建session的话
在commit后
session就自动被关闭了
也就是不用再session.close()了
但是如果使用的是sessionFactory的openSession方法创建的session的话
那么必须显示的关闭session
也就是调用session.close()方法
这样commit后
session并没有关闭
对象还是持久状态
而非脱管状态
除非调用了session.close()才是脱管状态。
//不论是脱管状态还是临时状态,save一定作插入,update则一定作更新!
//使用saveOrUpdate方法的话,如果对象处于临时状态的话会进行插入,如果是脱管状态的话会更新。
//如果我把一个脱管的对象u.setId(0)的话,由于id是主键,是整型,那么被置为0后就会被认为没有主键了,
//既然没有了主键那就是临时状态,而不再是脱管状态了
//就是说,如果对象里面的主键是0的话,且和session没有关系,那么就是临时状态,如果是非0值的话,
//就是脱管状态!
//反过来说,临时态主键就是0,所以sessionFactory的返回值一定是0!
session.save()返回值问题的更多相关文章
- ThinkPHP中数据库操作返回值总结
转自:http://www.baiwar.com/post/thinkphp-database-operations-in-the-return-value.html Thinkphp中的Think\ ...
- 【转】ThinkPHP中数据库操作返回值总结
Thinkphp中的Think\Model类提供了数据库的基本CURD(Create.Update.Read及Delete),通过该类可以很便捷的进行操作.Model类及扩展类主要的方法有: Crea ...
- 【未解决】CImage::Save / Load 导致“线程 0xc224 已退出,返回值为 1 (0x1)”
不知道这个返回值意味着什么,反正只要用到Save/Load就会出现这个情况. 这个链接:http://forums.codeguru.com/showthread.php?354017-The-thr ...
- out.println(session.getLastAccessedTime());的返回值到底是毛线意思???
out.println(session.getLastAccessedTime());这个语句是输出最后一次成功获取session对象Attribute值的一个指令, 他的返回值是一个long型数据, ...
- 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma
1 PersonTestMapper.xml中的内容如下: <?xmlversion="1.0"encoding="UTF-8"?> < ...
- SpringMVC 学习笔记(请求方法的返回值和参数)
在用注解对配置 处理器时,一般是一个方法处理一个请求,不同方法的返回类型有着不同的意义. 返回值为 ModelAndView 类型 ModelAndView 是Model 和 View 的一个集合类型 ...
- SpringMVC框架笔记02_参数绑定返回值文件上传异常处理器JSON数据交互_拦截器
目录 第1章 高级参数的绑定 1.1 参数的分类 1.2 数组类型的参数的绑定 1.3 集合类型的参数的绑定 第2章 @RequestMapping的用法 2.1 URL路径映射 2.2 请求方法限定 ...
- GetLastError()函数返回值及含义
GetLastError返回的值通过在api函数中调用SetLastError或SetLastErrorEx设置.函数并无必要设置上一次错误信息,所以即使一次GetLastError调用返回的是零值, ...
- laravel框架总结(十) -- 返回值
以前用CI框架对于返回值没有过多关注,但是发现使用laravel框架的时候出现了一些小问题,特意实践总结了一些常用情形,希望对大家有所帮助 先理解几个概念: 1>StdClass 对象=&g ...
随机推荐
- 如何排查CPU飙升的Java问题
1. JPS 查看jvm进程 2. 显示线程列表 ps -mp pid -o THREAD,tid,time 找到了耗时最高的线程tid 3. tid转换成16进制 printf "%x\n ...
- Map集合、散列表、红黑树介绍
前言 声明,本文用得是jdk1.8 前面已经讲了Collection的总览和剖析List集合: Collection总览 List集合就这么简单[源码剖析] 原本我是打算继续将Collection下的 ...
- angular2 学习笔记 ( angular cli & npm version manage npm 版本管理 )
更新 : 2017-05-05 现在流行 Yarn ! 它是 facebook google 推出的东西. 算是补助 npm 做的不够好的地方. 源码依然是发布去 npm,只是下载接口换掉罢了哦. n ...
- Spring知识点回顾(03)Bean的 Scope
sigleton prototype request session globalsession stepscope
- C++中const对象和非const对象调用成员函数问题
一.类MyClass 二.主函数调用 三.结果
- python flask框架 tempates 模版的使用
在py文件同级下 建立templates文件夹,再文件夹中编写html文件 1 向模版中传递参数: ''' 1 向模板传送 参数 ''' @app.route('/') def index(): na ...
- Django实现 省 市 县 自关联的下拉级联
前端部分: 三个下拉拉菜单进行级联 <body> <select id="province" > <option value="" ...
- MYSQL 面试查询系列问题
表结构: `student`('id'.'name'.'code'.'age'.'sex')学生表 `teacher`('id'.'name')教师表 `course`('id'.'name'.'te ...
- python/MySQL(索引、执行计划、BDA、分页)
---恢复内容开始--- python/MySQL(索引.执行计划.BDA.分页) MySQL索引: 所谓索引的就是具有(约束和加速查找的一种方式) 创建索引的缺点是对数据进行(修改.更新.删除) ...
- 蛋疼zipline安装
比安装zipline更让人蛋疼的是,网上的教程没有一个是TM对的,真的是忍不住要吐血. 真的是一步一坑,一步一坑 安装环境: Windows7旗舰版,64位系统 python 版本3.5.3 我没有用 ...