使用hibernate更新数据库记录的信息的相关学习记录
截选代码(可能遗漏标点符号):
package name.sql;
import java.util.List;
import name.session.HibernateSessionFactory;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class SqlHelper {
//增
public void save(Object obj){
//注意:对obj调用完构造函数或者set赋值后才传入
Session session=HibernateSessionFactory.getSession();
Transaction tr=session.beginTransaction(); //开始事务
try{
session.save(obj);
tr.commit();
}catch(Exception e){
tr.rollback();
System.out.println("保存出错,已回滚:"+e);
}
session.close();
System.out.println("保存成功");
}
//删
public void delete(Object obj){
//注意:调用该函数前(即传参进来的时候),先对obj调用set方法设置主键值,然后才能调用该函数
Session session=HibernateSessionFactory.getSession();
Transaction tr=session.beginTransaction(); //开始事务
try{
session.delete(obj);
tr.commit();
}catch(Exception e){
tr.rollback();
System.out.println("删除出错,已回滚:"+e);
}
session.close();
System.out.println("删除成功");
}
//改
public void update(Object obj){
//注意:调用该函数前(即传参进来的时候),先对obj调用set方法设置主键值,然后才能调用该函数
Session session=HibernateSessionFactory.getSession();
Transaction tr=session.beginTransaction(); //开始事务
try{
// obj=session.get(obj.getClass(),1);
System.out.println(obj);
session.update(obj);
tr.commit();
}catch(Exception e){
tr.rollback();
System.out.println("更新出错,已回滚:"+e);
}
session.close();
System.out.println("更新成功");
}
/*查询,并返回查询集*/
public List query(String sqlcmd){
/*注意:此处sqlcmd的查询语句书写:如 "from name.Reader where reader_id='sumihui'"
*from的是类名,不是表名!!!*/
Session session=HibernateSessionFactory.getSession();
Query query=session.createQuery(sqlcmd);
@SuppressWarnings("unchecked")
List list=query.list();
return list;
}
}
[遇见的问题清单]:
在使用hibernate更新数据库记录的信息时,出现org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1 错误。
原因分析:
我在更新数据时,显式地使用了id的setId()方法为其指定值。但是我的实体类的id指定了主键生成策略(@GeneratedValue(strategy = GenerationType.AUTO)
),此时不能显式使用setId()方法设置id的值。
解决方法:
不要显式地使用setId方法设置主键值。(显示)
使用hibernate更新数据库记录的信息的相关学习记录的更多相关文章
- 02 | 日志系统:一条SQL更新语句是如何执行的? 学习记录
<MySQL实战45讲>02 | 日志系统:一条SQL更新语句是如何执行的? 学习记录http://naotu.baidu.com/file/ad320c7a0e031c2d6db7b5a ...
- Yii2的相关学习记录,前后台分离及migrate使用(七)
最近一直忙其它的(其实是懒!),将<深入理解Yii2>看了一遍,一些当初没明白的稍微明了了点,然后又看yii2的图片上传等处理.富文本.restful什么的,但由于没进行到这里,只看也不管 ...
- Yii2的相关学习记录,初始化Yii2(二)
前面已经将Yii2下载下来了,那我们就需要能实际的使用. 一.初始化,因为我都是在windows系统下,所以用cmd命令打开下载下来的Yii2的根目录.然后运行下面命令: init 会提示选择0为开发 ...
- java 项目相关 学习记录
一位资深程序员大牛给予Java初学者的学习路线建议 [任何时期都可以好好看看] https://www.imooc.com/article/8993 https://www.jianshu.com/ ...
- mybatis原理分析学习记录,mybatis动态sql学习记录
以下个人学习笔记,仅供参考,欢迎指正. MyBatis 是支持定制化 SQL.存储过程以及高级映射的持久层框架,其主要就完成2件事情: 封装JDBC操作 利用反射打通Java类与SQL语句之间的相互转 ...
- linux 相关学习记录
(一)概念① 物理CPU实际Server中插槽上的CPU个数物理cpu数量,可以数不重复的 physical id 有几个② 逻辑CPU /proc/cpuinfo 用来存储cpu硬件信息的信息内容分 ...
- Yii2的相关学习记录,alert等美化、confirm异步、session中的flash及小部件的使用(六)
呃,系统自带的alert.confirm等弹出框实在是难看,作为一个颜控,这能忍? 这里我用的是kartik-v/yii2-dialog,这个是基于bootstrap3-dialog这个来做了一些常用 ...
- Yii2的相关学习记录,下载Yii2(一)
原先学习过Yii1的相关知识,虽然也是半懂不懂的,但稍微的结构是了解的.现在利用晚上的时间学习下Yii2的使用,打算建一个后台管理系统,这里记录下,以免自己以后忘记. 目前已看一部分Yii2的权威指南 ...
- Fiddler使用 断点 模拟返回 AutoResponder Mock 模拟数据 相关学习记录
断点 测试中有时需要改变发出去的请求信息,需要用到打断点的方法.断点包含两种方式: before response:在request请求的时候,未到达服务器之前,一般用来修改请求参数 after re ...
随机推荐
- ios专题 - 单例模式的实现
[原创]http://www.cnblogs.com/luoguoqiang1985 单例模式是什么? 一个类只有一个实例. ----------------------- 这样做有什么好处? 在我的 ...
- 转: angularjs 指令中动态编译的方法(适用于有异步请求的情况) 内嵌指令无效
angular的坑很多 例子: 在directive的link中有一个$http请求,当请求完成后根据返回的值动态做element.append('......');这个操作, 能显示没问题,可问题是 ...
- 【转】通用分页用户控件(DataGrid,DataList,Repeater都可以用它来分页)
通用分页控件(DataGrid,DataList,Repeater都可以用它来分页) 1.建立用户控件Pager.ascx 1.1 html </ASP:LABEL></TD> ...
- SGU 269. Rooks(DP)
题意: 给n(<=250)条水平网格,然后在上面放k棋子,每行每列都只能放一个.求方法总数. Solution: 简单的DP, 只要对给出的水平长度排个序就很容易处理了. 需要用到高精度. 偷懒 ...
- [Lua]基于cc.load('mvc') .ViewBase索引资源方案
local MainScene = class("MainScene", cc.load("mvc").ViewBase) MainScene.RESOURCE ...
- 关于Apple设备私有的apple-touch-icon属性详解
以前我们用过favicon在浏览器给网站进行身份标识,用法如下: <link href="http://image.feeliu.com/web/favicon.ico" r ...
- iOS 从C移植项目到Objective-C
一.新建项目 iOS | Framework & Library Cocoa Touch Static Library 新建一个Library库 1. M.h头文件 #ifndef M_h # ...
- hibernate面试笔记
Hibernate使用Java 反射机制 而不是字节码增强程序来实现透明性 如果JDBC代码写的完美,优化做好,那么JDBC效率是最高的.但是,实际开发中非常不现实,对程序员要求太高.一般情况下,hi ...
- Python环境搭建中解决C编译的问题
下载必要文件 Python Microsoft Visual C++ Compiler for Python 2.7 setuptools 安装Python 安装VCForPython27 在命令行下 ...
- WPF布局容器综合展示
Border控件,以及几个重要要的属性:Background:背景的 Brush 对象BorderBrush:用来绘制边框BorderThickness: Border 边框的宽度,设置边框每一边的线 ...