zoukankan      html  css  js  c++  java
  • 使用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方法设置主键值。(显示)

  • 相关阅读:
    php网摘收藏
    php优秀网摘
    jquery ajax thinkphp异步局部刷新完整流程
    easyui的accordion为动态生成,accordion的onSelect方法中又动态生成tree,为什么要第二次选择accordion,tree才生成出来
    php导出CSV文件时身份证号码显示为科学计数的解决方法
    php导出数据到excel,防止身份证等数字字符格式变成科学计数的方法
    JQuery实战教程即将面市
    在windows+apache环境下安装ioncube
    PHP长文章分页 实现手动分页代码 代码简单
    DEDE非内容页调用自定义字段使用方法
  • 原文地址:https://www.cnblogs.com/360-782/p/Hibernate.html
Copyright © 2011-2022 走看看