子类继承HibernateDaoSupport后如何注入SessionFactory

子类继承HibernateDaoSupport后,由于HibernateDaoSupport,setSessionFactory是使用final修飾的,無法重寫,沒有辦法使用註解的方式注入sessionFactroy

public final void setSessionFactory(SessionFactory sessionFactory) {
        if (this.hibernateTemplate == null || sessionFactory != this.hibernateTemplate.getSessionFactory()) {
            this.hibernateTemplate = createHibernateTemplate(sessionFactory);
        }
    }

我们可以变通一下,自己定义一个方法,这个方法去调用hibernateDaoSupport 中的setSessionFacotry方法,达到注入sessionFactory的目的。

    @Autowired
    public void setSuperSessionFactory(SessionFactory sessionFactory) {  
       super.setSessionFactory(sessionFactory);  
    }  

this.getHibernateTemplate().save()方法报错的问题
InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.

两步:
1.web.xml中打开懒加载

<!--   懒加载 -->
    <filter>

        <filter-name>OpenSessionInViewFilter</filter-name>

        <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>

    </filter>

    <filter-mapping>

        <filter-name>OpenSessionInViewFilter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>  

    2.在执行save之前加这么一句:this.getHibernateTemplate().getSessionFactory().getCurrentSession().setFlushMode(FlushMode.AUTO)

this.getHibernateTemplate().getSessionFactory().getCurrentSession().setFlushMode(FlushMode.AUTO);
        this.getHibernateTemplate().save(historyArcticlesRequest);

时间: 2024-08-12 15:40:01

子类继承HibernateDaoSupport后如何注入SessionFactory的相关文章

子类继承父类后重载protected方法提升访问权限为public

某汽车公司有一款新车上市,但该公司规定这款车必须由公司内部人员驾驶,那么也就是这样  代码如下 复制代码 public class NewCar{  protected void drive() {  // drive the car  } } 不过你说我买来一辆车总不能让这汽车公司的人来为我开车吧,所以这车的驾驶功能应该对我开放了才行,当然,只有属于我的车我才可以这样做,所以  代码如下 复制代码 class MyNewCar extends NewCar {  @Override  publ

java继承-java关于子类继承的问题

问题描述 java关于子类继承的问题 在java中子类可以继承父类的对象吗 子类都可以继承父类的哪些功能 解决方案 令人费解的java继承问题java笔试问题(继承)java 中 集合类相关问题 解决方案二: 继承父类对象是什么意思?子类继承父类所有的属性和方法. 解决方案三: 子类当然可以继承父类,继承,顾名思义,就是子类拥有父类的所有方法和属性,此外,在子类中还可以定义一些父类中没有的方法,.当子类继承父类后, 可以直接调用父类的方法.不用再去创建,定义.这样,大大增加了代码的重用率,提高了

子类继承父类实现父类的代理方法

子类继承父类实现父类的代理方法 父类提供虚函数(OC中称为代理方法),子类继承后实现虚函数来实现特定的功能. 父类方法: NumberCount.h 与 NumberCount.m // // NumberCount.h // YXMWeather // // Created by XianMingYou on 15/2/18. // Copyright (c) 2015年 XianMingYou. All rights reserved. // #import <Foundation/Foun

java-关于spring+hibernate 注入sessionFactory为null的问题

问题描述 关于spring+hibernate 注入sessionFactory为null的问题 最近一个项目需要用到struts2+spring+hibernate组合框架,我在一点一点的做配置,但做到注入SessionFactory时,一直不成功,在网上搜的一些解决方案也都不适用.故在此发布,希望高手们不吝赐教.web.xml的配置为: <?xml version=""1.0"" encoding=""UTF-8""

java+ 程序 子类继承父类 创建子类对象时构造方法中无显示调用父类构造方法

问题描述 java+ 程序 子类继承父类 创建子类对象时构造方法中无显示调用父类构造方法 创建子类对象时,Student s = new Student(""school""); 该构造方法中没有显示调用父类的构造方法,但还是编译成功了,该构造方法调用自身的构造函数,此构造函数中有调用父类的构造方法,执行成功的原因是什么 解决方案 不用显示调用,会自动执行父类的构造 解决方案二: 子类的构造方法中,如果没有显示调用父类的构造方法,会默认调用父类无参的构造方法.类似于

java语法-子类继承父类关于super关键词的问题

问题描述 子类继承父类关于super关键词的问题 子类继承父类关于super关键词的问题 super ( ) 和super eat ( )的区别 是不是super( )只是复写了父类的构造方法 super eat ( )只是复写了父类的eat方法 那么super.eat( )这种写法是错误的么 我记得有super.╳╳╳这种写法的 解决方案 你看到的应该是调用父类的内嵌类.

wpf c#-请教:WPF中 子类继承父类的INotifyPropertyChanged的问题

问题描述 请教:WPF中 子类继承父类的INotifyPropertyChanged的问题 父类实现了INotifyPropertyChanged接口,子类数据改变时如何驱动父类的INotifyPropertyChanged? 父类实现接口方法: public event PropertyChangedEventHandler PropertyChanged; /// <summary> /// 数据驱动 /// </summary> /// <param name=&quo

struts2 0-action继承ActionSupport后action不能访问特定的方法是为什么

问题描述 action继承ActionSupport后action不能访问特定的方法是为什么 表单的action为: <form action="login.action"></form> struts2.xml的配置为: <action name="login" class="loginAction" method="userLogin"> <result name="ok

c++-父类非虚函数,子类继承变成虚函数,会发生什么

问题描述 父类非虚函数,子类继承变成虚函数,会发生什么 想法很奇葩,运行结果更是奇葩,大家看应该怎么解释一下,运行环境是vs2012 release Win32平台 代码: #include<iostream> using namespace std; class A { public: void foo() { printf("A类中:实foo()n"); } virtual void fun() { printf("A类中:虚fun()n"); }