Question

What is wrong with this configuration? I'm using Spring 3 and Hibernate 3.6 and trying to set up to use DAOs. I'm seeing two errors in hibernate.cfg.xml.

The first is on the session-factory tag-

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

The second is on the - property name="dataSource" - tag-

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

application-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>
Was it helpful?

Solution

You mixed Hibernate and Spring configurations. They are completelly separate. You can't use Spring beans inside Hibernate config.

This will need to go to your Spring config:

<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>

I may be mistaken over small things since I usually use annotations configuration but you should go back to documentation.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top