开启事物:Transaction tx = session.beginTransaction(); 

解决方案 »

  1.   

    兄弟呀 ,你这样是不行的不知道你的主键设是否是要native那应当是没问题的要是assigned的那就就不可以
    不知道你 心中有没事务的概念呀 ,,你这样可能读取到未提交的事务的
    String getEname=(String) session.getEntityName(objectname); 
    System.out.println(getEname); 
    //在这里你执行了查询的操作,但没有将这次操作写到数据库中,只是到了缓存中了
    //加一句
    session.flush();
    //看看就没什么问题了
    //要是主键设置为native的话,执行了操作就直接于数据库交互了
    Object delid=session.get(getEname,id); 
    session.delete(delid); 
    tx.commit(); 
      

  2.   

    object references an unsaved transient instance 说明你删除的是一个非持久化对象。
    你查一下数据库,看看你输入的id在数据库中是否存在。
      

  3.   

    正如你所说的.主键没有设为native,而是assigned.
    不过你上述的方法,我还是解决不了问题.我用断点调试了一下.发现问题是在这个语句上:
    String getEname=(String) session.getEntityName(objectname); 
    之后它就跳到e.printStackTrace(); 作异常处理.