org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Could not instantiate id generator [entity-name=com.jboa.entity.SysRoleRight]
错误提示中Could not instantiate id generator [entity-name=com.jboa.entity.SysRoleRight]
说明了id属性生成策略问题呢,hibernate 提供了许多生成策略比如常用的 assigned,increment,native,sequence 以及默认的 seqhilo
sequence 特点:只能在支持序列的数据库中使用,比如Oracle数据库。
问题出在于这些数据库不支持相关的生成策略。org.hibernate.dialect.MySQLDialect does not support sequences
mysql怎么解决sequence 的错误,用代码来解释
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.bdqn.jboa.entity.SysRoleRight" table="SYS_ROLE_RIGHT" >
<id name="rfId" type="java.lang.Integer">
<column name="RF_ID" precision="8" scale="0" />
<generator class="sequence"></generator>
</id>
</class>
</hibernate-mapping>
用hibernate里面的方法实现,改为下面的配置
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.bdqn.jboa.entity.SysRoleRight" table="SYS_ROLE_RIGHT" >
<id name="rfId" type="java.lang.Integer">
<column name="RF_ID" precision="8" scale="0" />
<generator class="org.hibernate.id.enhanced.SequenceStyleGenerator">
<!-- sequence的名字,默认是"hibernate_sequence" -->
<param name="sequence_name">hibernate_sequence</param>
</generator>
</id>
</class>
</hibernate-mapping>
这样就解决了