最近开发和学习过程中,遇到很多零碎的知识点,在此简单地记录下:

1.遇如下bug:

org.unsaved transient instance - save the transient instance before flushing: org.blog.blog.domain.HighStudent

解释:意思是说hibernate从数据库中查询出来的一个对象HighSchool(为持态,我给它的事物定义为readOnly,只有只读权限),然后又给它的属性或者它属性的属性(highStudents.comment.cxpy)进行set值,这样hibernate是不允许的。因为你对一个事物为只读状态的对象进行赋值,显然是不允许,除非你主动调用saveOrUpate

方法。serice方法事物是readOnly,dao中就查询出来的对象不允许修改属性。

解决方法:将查询出来的对像使用session.evict()方法转换为游离态,此时就可以查询成功。代码如下:

@Override
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public List<PrimaryStudents> getPrimaryStudentsList(String[] stuids)
throws StuBaseDataException {
List<PrimaryStudents> list=new ArrayList<PrimaryStudents>();
String stu=stuids[0];
String [] studentids=stu.split(",");
System.out.println(studentids.length);
try{
if(studentids.length>0){
for(int i=0;i<studentids.length ;i++){
PrimaryStudents primaryStudents=null;
primaryStudents=this.primaryStudentsDao.queryPrimaryStudentsBystuid(studentids[i]);
if(primaryStudents==null){
throw new StuBaseDataException("该批学生中存在学生信息不存在的学生,请刷新之后再进行该操作");
}
list.add(primaryStudents);
}
}else{
throw new StuBaseDataException("请选择一位学生");
}
}catch (Exception e) {
e.printStackTrace();
throw new StuBaseDataException("查询失败!!!",e);
}
return list;
}
    @Override
public PrimaryStudents queryPrimaryStudentsBystuid(String stuid) {
List<PrimaryStudents> list= null;
Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession();
String sql="From PrimaryStudents ps where ps.id in("+stuid+")";
Query query = session.createQuery(sql);
list = query.list();
if (list != null && list.size() > 0)
{
/**
* 在做学籍卡批量打印的时候,显示问题。
* 评语不足6个的时候,构造几个空的,显示到页面上去。
* 强制转换为游离态
*/
session.evict(list.get(0));
return (PrimaryStudents)list.get(0);
}
return null;
}

org.unsaved transient instance - save the transient instance before flushing: bug解决方案的更多相关文章

  1. ERROR org.hibernate.internal.SessionImpl - HHH000346: Error during managed flush [object references an unsaved transient instance - save the transient instance before flushing: cn.itcast.domain.Custom

    本片博文整理关于Hibernate中级联策略cascade和它导致的异常: Exception in thread "main" org.hibernate.TransientOb ...

  2. object references an unsaved transient instance save the transient instance before flushing

    object references an unsaved transient instance save the transient instance before flushing 对象引用未保存的 ...

  3. object references an unsaved transient instance - save the transient instance before flushing: com.jspxcms.core.domain.ScTeam

    object references an unsaved transient instance - save the transient instance before flushing: com.j ...

  4. object references an unsaved transient instance - save the transient instance before flushing异常问题处理

    一.异常:org.hibernate.TransientObjectException: object references an unsaved transient instance - save ...

  5. object references an unsaved transient instance - save the transient instance before flushing错误

    异常1:not-null property references a null or transient value解决方法:将“一对多”关系中的“一”方,not-null设置为false(参考资料: ...

  6. hibernate 对象状态异常:object references an unsaved transient instance - save the transient instance before flushing

    我的问题出在,删除的对象对应的表中有一个外键,关联着另外一个表,可是另外一个表中没有数据,所以报了这个错误. 参考http://www.cnblogs.com/onlywujun/archive/20 ...

  7. Hibernate的一个问题object references an unsaved transient instance - save the transi5

    1 我做了一对多和多对一的双向关联关系,在User这一方@ManyToOne已经设置了级联Cascade,这样在测试程序中保存User时,Group也应该自动保存,为什么会抛出以下的异常: (我是按着 ...

  8. save the transient instance before flushing错误解决办法 【待完善】

    近日在项目中遇到以下错误,着实郁闷了一把: org.hibernate.TransientObjectException: object references an unsaved transient ...

  9. 【总文档】rac增加新节点的方法步骤 How to Add Node/Instance or Remove Node/Instance in 10gR2, 11gR1, 11gR2 and 12c Oracle Clusterware and RAC

    [总文档]How to Add Node/Instance or Remove Node/Instance in 10gR2, 11gR1, 11gR2 and 12c Oracle Clusterw ...

随机推荐

  1. Linux SHELL脚本

    在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具.Shell不仅仅是命令的收集,而且是一门非常棒的编程语言.可以通过使用shell使大量的任务自动化,shell ...

  2. SQL Server ->> Msg 7411, Level 16, State 1, Line 1 -- Server 'XXXX' is not configured for RPC.

    关于问题,有两个相关的服务器选项. exec sp_serveroption @server='CIA-SH-SVR-SIS', @optname='rpc', @optvalue='true' ex ...

  3. 从一个前端项目实践 Git flow 的流程与参考

    Git flow 出自 A successful Git branching model,这里使用了一个前端项目配合本文稿实施了 git flow 并记录流程作出示例和参考,对 hotfix 与持续部 ...

  4. c# ffmpeg视频转换

    c#  ffmpeg视频转换 什么是ffmpeg,它有什么作用呢,怎么可以使用它呢,带着问题去找答案吧!先参考百度百科把,我觉得它很强大无奇不有,为了方便大家我就把链接提供了! http://baik ...

  5. Redhat6下安装QEMU

    Redhat6下安装QEMU 1.下载QEUM:http://wiki.qemu.org/Download 2.解压qemu-1.6.1.tar.bz2到/tmp目录(也可以是其他目录)下,并进入解压 ...

  6. Android实现网络多线程文件下载

    实现原理 (1)首先获得下载文件的长度,然后设置本地文件的长度. (2)根据文件长度和线程数计算每条线程下载的数据长度和下载位置. 如:文件的长度为6M,线程数为3,那么,每条线程下载的数据长度为2M ...

  7. 自动化mobile测试

    MicroFocus推出手机自动化测试工具 - Silk Mobilehttp://automationqa.com/forum.php?mod=viewthread&tid=1068& ...

  8. leetcode:Delete Node in a Linked List

    Write a function to delete a node (except the tail) in a singly linked list, given only access to th ...

  9. nginx fastcgi php-fpm的关系梳理

    CGI(Common Gateway Interface)CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具 ...

  10. 函数lock_rec_enqueue_waiting

    type_mode基础上 加上 LOCK_WAIT 表示等待状态 /****************************************************************** ...