首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate SessionFactory错误

Hibernate SessionFactory错误
EN

Stack Overflow用户
提问于 2015-05-24 10:51:56
回答 1查看 1.5K关注 0票数 0

applicationContext.ml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:p="http://www.springframework.org/schema/p"
   xmlns:tx="http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
   http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
   http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">

<bean id="dataSource"
      class="org.springframework.jdbc.datasource.DriverManagerDataSource"
      p:driverClassName="${jdbc.driverClassName}"
      p:url="${jdbc.url}"
      p:username="${jdbc.username}"
      p:password="${jdbc.password}"/>

<bean id="propertyConfigurer"
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
      p:location="/WEB-INF/jdbc.properties" />

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="annotatedClasses">
        <list>
            <value>it.davidefruci.casadiscografica2.beans.Album</value>
            <value>it.davidefruci.casadiscografica2.beans.Artist</value>
            <value>it.davidefruci.casadiscografica2.beans.Song</value>
            <value>it.davidefruci.casadiscografica2.beans.RecordCompany</value>
            <value>it.davidefruci.casadiscografica2.beans.Category</value>
        </list>
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
        </props>
    </property>
</bean>

<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="dataSource" ref="dataSource" />
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

<!-- DAO -->
<bean id="albumDao" class="it.davidefruci.casadiscografica2.daoImpl.AlbumDaoImpl">
     <property name="sessionFactory" ref="sessionFactory"/>
</bean>

<bean id="artistDao" class="it.davidefruci.casadiscografica2.daoImpl.ArtistDaoImpl">
     <property name="sessionFactory" ref="sessionFactory"/>
</bean>

<bean id="categoryDao" class="it.davidefruci.casadiscografica2.daoImpl.CategoryDaoImpl">
     <property name="sessionFactory" ref="sessionFactory"/>
</bean>

<bean id="recordCompanyDao" class="it.davidefruci.casadiscografica2.daoImpl.RecordCompanyDaoImpl">
     <property name="sessionFactory" ref="sessionFactory"/>
</bean>

<bean id="songDao" class="it.davidefruci.casadiscografica2.daoImpl.SongDaoImpl">
     <property name="sessionFactory" ref="sessionFactory"/>
</bean>

<!-- BO -->
<bean id="albumBo" class="it.davidefruci.casadiscografica2.boImpl.AlbumBoImpl">
    <property name="albumDao" ref="albumDao"></property>
</bean>

<bean id="artistBo" class="it.davidefruci.casadiscografica2.boImpl.ArtistBoImpl">
    <property name="artistDao" ref="artistDao"></property>
</bean>

<bean id="categoryBo" class="it.davidefruci.casadiscografica2.boImpl.CategoryBoImpl">
    <property name="categoryDao" ref="categoryDao"></property>
</bean>

<bean id="recordCompanyBo" class="it.davidefruci.casadiscografica2.boImpl.RecordCompanyBoImpl">
    <property name="recordCompanyDao" ref="recordCompanyDao"></property>
</bean>

<bean id="songBo" class="it.davidefruci.casadiscografica2.boImpl.SongBoImpl">
    <property name="songDao" ref="songDao"></property>
</bean>

AlbumDao

代码语言:javascript
复制
public interface AlbumDao {

public void save(Album album) throws Exception;
public void delete(int id) throws Exception;
public void update(Album album) throws Exception;

public Album findById(int id) throws Exception;
public Album findByName(String name) throws Exception;

public List<Album> getAllAlbum() throws Exception;

}

AlbumDaoImpl包装:Davidefruci.casadiscografica2.daoImpl;

代码语言:javascript
复制
public class AlbumDaoImpl implements AlbumDao {

@Autowired
@Qualifier("sessionFactory")
SessionFactory sessionFactory;

public SessionFactory getSessionFactory() {
    return sessionFactory;
}

public void setSessionFactory(SessionFactory factory) {
    this.sessionFactory = factory;
}  

@Override
public void save(Album album) throws Exception {
    Session session = sessionFactory.openSession();
    Transaction tx = null;

    try {
        tx = session.beginTransaction();
        session.saveOrUpdate(album);
        tx.commit();
    } catch (HibernateException e) {
        if (tx != null) {
            tx.rollback();
        } else {
            e.printStackTrace();
        }
    } finally {
        session.close();
    }
}

@Override
public void delete(int id) throws Exception {
    Session session = sessionFactory.openSession();
    Transaction tx = null;

    try {
        tx = session.beginTransaction();
        Album album = (Album) session.get(Album.class, id);
        session.delete(album);
        tx.commit();

    } catch (HibernateException e) {
        if (tx != null) {
            tx.rollback();
        } else {
            e.printStackTrace();
        }

    } finally {
        session.close();
    }
}

@Override
public void update(Album album) throws Exception {
    Session session = sessionFactory.openSession();
    Transaction tx = null;
    try {
        tx = session.beginTransaction();
        session.saveOrUpdate(album);
        tx.commit();

    } catch (HibernateException e) {
        if (tx != null) {
            tx.rollback();
        }
        throw e;
    } finally {
        session.close();
    }
}

@Override
public Album findById(int id) throws Exception {
    Session session = sessionFactory.openSession();
    Album album = null;
    try {
        album = (Album) session.get(Album.class, id);

    } catch (HibernateException e) {
        throw e;
    } finally {
        session.close();
    }
    return album;
}

@Override
public Album findByName(String name) throws Exception {
    Session session = sessionFactory.openSession();
    Album album = null;
    List<Album> list = new ArrayList<Album>();

    try {
        Query query = session.createQuery("FROM Album WHERE name= :name");
        query.setParameter("name", name);
        list = query.list();
        if (list != null) {
            if (list.size() == 1) {
                album = list.get(0);
            }
        }
    } catch (HibernateException e) {
        throw e;
    } finally {
        session.close();
    }
    return album;
}

@Override
public List<Album> getAllAlbum() throws Exception {
    Session session = sessionFactory.openSession();
    Transaction tx = null;
    List<Album> list = null;
    try {
        list = session.createQuery("FROM Album").list();

    } catch (HibernateException e) {
        throw e;
    } finally {
        session.close();
    }
    return list;
}

}

Tomcat不部署应用程序。上面写着

在上下文路径/CasaDiscografica2上部署的应用程序失败,但是上下文无法启动。

告诉我那些错误:

在org.springframework.beans.factory.BeanCreationException:资源/WEB/applicationContext.xml中定义了名为“albumDao”的bean创建ServletContext错误:设置属性值错误;嵌套异常是bean类的org.springframework.beans.NotWritablePropertyException:无效属性“sessionFactory”

bean类的org.springframework.beans.NotWritablePropertyException:无效属性'sessionFactory‘it.davidefruci.casadiscografica2.daoImpl.AlbumDaoImpl: Bean属性'sessionFactory’是不可写的,或者具有无效的setter方法。setter的参数类型是否与getter的返回类型匹配?

为什么?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-05-24 11:25:30

如果您是自动添加SessionFactory,则不需要在上下文中显式地注入它。

如果您希望自动装配工作,请不要忘记将<context:annotation-config />添加到应用程序上下文中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30422674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档