2011-06-14 63 views
0

這種配置有什麼問題?我正在使用Spring 3和Hibernate 3.6並嘗試設置使用DAO。我在hibernate.cfg.xml中看到兩個錯誤。我的Spring和Hibernate配置有什麼問題?

首先是在會話工廠標籤 -

The content of element type "session-factory" must match 
"(property*,mapping*,(class-cache|collection-cache)*,event*,listener*)". 

第二個是對 - 屬性名= 「數據源」 - 標籤 -

The content of element type "property" must match "null". 

應用的context.xml

<?xml version="1.0" encoding="UTF-8"?> 
    <beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:mvc="http://www.springframework.org/schema/mvc" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:aop="http://www.springframework.org/schema/aop" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
      http://www.springframework.org/schema/aop 
      http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
      http://www.springframework.org/schema/context 
      http://www.springframework.org/schema/context/spring-context-3.0.xsd 
      http://www.springframework.org/schema/mvc 
      http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 
    <bean id="dataSource" 
    class="org.apache.tomcat.dbcp.dbcp.BasicDataSource"> 
     <property name="driverClassName"> 
     <value>com.mysql.jdbc.Driver</value> 
     </property> 
     <property name="url"> 
     <value>jdbc:mysql://localhost/projectName</value> 
     </property> 
     <property name="username"> 
     <value>uname</value> 
     </property> 
     <property name="password"> 
     <value>pass</value> 
     </property> 
     <!-- Disable the second-level cache --> 
     <!-- Echo all executed SQL to stdout --> 
    </bean> 
    </beans> 

hibernate.cfg.xml

<!DOCTYPE hibernate-configuration PUBLIC 
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
<session-factory> 
    <!-- Database connection settings --> 
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
    <property name="dataSource"> 
     <ref bean="dataSource"/> 
    </property> 
    </bean> 
    <!-- SQL dialect --> 
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property> 
    <!-- Disable the second-level cache --> 
    <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> 
    <!-- Echo all executed SQL to stdout --> 
    <property name="show_sql">true</property> 
    <property name="transaction.factory_class"> 
    org.hibernate.transaction.JDBCTransactionFactory 
    </property> 
    <property name="current_session_context_class"> 
    thread 
    </property> 
    <mapping class="com.projectname.model.name"/> 
    <mapping class="com.projectname.model.stuff"/> 
</session-factory> 
</hibernate-configuration> 

回答

2

您混合了Hibernate和Spring配置。它們完全分開。你不能在Hibernate配置中使用Spring beans。

這將需要到您的Spring配置:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
<property name="dataSource"> 
    <ref bean="dataSource"/> 
</property>  
    <!-- SQL dialect --> 
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property> 
    <!-- Disable the second-level cache --> 
    <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> 
    <!-- Echo all executed SQL to stdout --> 
    <property name="show_sql">true</property> 
    <property name="transaction.factory_class"> 
    org.hibernate.transaction.JDBCTransactionFactory 
    </property> 
    <property name="current_session_context_class"> 
    thread 
    </property> 
</bean> 

我可能被誤認爲在小事情,因爲我通常使用註釋配置,但你應該回去文檔。