您的位置:首页 > 其它

网摘精灵教程:网摘精灵延时功能详解

2006-05-18 23:53 281 查看
因为lazy的问题,还是采用了OpenSessionInView
一开始我的web.xml配置文件如下:

    <filter> 
        <filter-name>opensession</filter-name> 
        <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> 
    </filter> 
写了个保存的代码测试了一下,报如下的错误:

org.springframework.dao.InvalidDataAccessApiUsageException: Write operations 
are not allowed in read-only mode (FlushMode.NEVER) - turn your Session 
into FlushMode.AUTO or remove 'readOnly' marker from transaction definition 
        at org.springframework.orm.hibernate3.HibernateTemplate.checkWriteOperationAllowed(HibernateTemplate.java:1076) 
        at org.springframework.orm.hibernate3.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:616) 
        at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:366) 
        at org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:614) 
        at com.phopesoft.security.service.impl.UserServiceImpl.addUser(UserServiceImpl.java:40) 
        at com.phopesoft.security.web.UserAction.add(UserAction.java:52) 
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
        at java.lang.reflect.Method.invoke(Method.java:585) 
        at com.opensymphony.xwork.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:365) 












在javaeye中搜索了一下,发现了Readonly的帖子,将web.xml修改为如下:

<filter> 
        <filter-name>opensession</filter-name> 
        <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> 
        <init-param> 
            <param-name>singleSession</param-name> 
            <param-value>false</param-value> 
        </init-param> 
    </filter> 
保存的代码顺利通过测试,但是删除的代码却不能通过了.出现如下的错误:
org.hibernate.HibernateException: Illegal attempt to associate a collection 
with two open sessions 
        at org.hibernate.collection.AbstractPersistentCollection.setCurrentSession(AbstractPersistentCollection.java:410) 
        at org.hibernate.event.def.OnUpdateVisitor.processCollection(OnUpdateVisitor.java:40) 
        at org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java:101) 
        at org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java:61) 
        at org.hibernate.event.def.AbstractVisitor.processEntityPropertyValues(AbstractVisitor.java:55) 
        at org.hibernate.event.def.AbstractVisitor.process(AbstractVisitor.java:123) 
        at org.hibernate.event.def.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:72) 
        at org.hibernate.impl.SessionImpl.fireDelete(SessionImpl.java:790) 
        at org.hibernate.impl.SessionImpl.delete(SessionImpl.java:768) 
        at org.springframework.orm.hibernate3.HibernateTemplate$25.doInHibernate(HibernateTemplate.java:772) 
        at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:366) 
        at org.springframework.orm.hibernate3.HibernateTemplate.delete(HibernateTemplate.java:766) 
        at org.springframework.orm.hibernate3.HibernateTemplate.delete(HibernateTemplate.java:762) 

同样在论坛里面搜索到遇到这个问题的朋友,回帖说去掉singleSession!

迷惑了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: