在Spring的MVC框架中集成Hibernate的时候,多半会报这个错org/hibernate/cfg/HbmBinder$SecondPass。上网找了很多资料才发现,报这个错是因为spring和hibernate的版本问题造成的。只要上官网下一个最新的包就可以解决了。
我使用的是Eclipse3.2.0+MyEclipse5.1.0+Tomcat6.0+JDK1.6+MySQL5.0的环境。基本上都是最新的东西了。现在最新的Hibernate包是3.2.2GA。还需要下一个hibernate-annotations-3.2.1.GA这个包。将这两个包里面的hibernate-annotations.jar和hibernate3.jar解压出来,替换工程里面的lib包下面的相同的文件就行了。或者把MyEclipse下面的Hibernate包也都替换掉,免得以后麻烦。hibernate-annotations.jar这个包是Spring框架下的。
在spring的MVC框架中配置hibernate资源的时候,最好是将XXX-servlet.xml文件中配置hibernate资源信息。这样比较好识别。XXX-servlet.xml文件是spring MVC框架的配置文件。相当于struts中struts-config.xml。如果你使用的是hibernate.cfg.xml文件来配置的话,那么必须加classpath来指定cfg.xml文件的位置。例如:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:/hibernate/hibernate.cfg.xml</value>
</property>
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/mydatabase</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>11111111</value>
</property>
</bean>