出现这个问题并不是因为mysql数据库本身的什么问题,最主要的问题是在指定表间关系的时候出现了错误。拿我这个问题来说吧,我做的是多对一的双向映射,再做单向的时候同样的代码,只是没有映射关系,可是一样很正确,使用注解做结果也是对的,可是使用文件配置双向一对多的时候就出现了上面的问题,
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.edu.model">
<class name="User" table="user">
<id name="id" column="uid">
<generator class="native"></generator>
</id>
<property name="uname" column="name" length="64"/>
<many-to-one name="group" column="ggroup" cascade="all"></many-to-one>
</class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.edu.model">
<class name="Group" table="mygroup">
<id name="id" column="gid">
<generator class="native"></generator>
</id>
<property name="gname" column="name" length="64" />
<set name="users" >
<key column="ggroup"></key>
<one-to-many class="cn.edu.model.User"/>
</set>
</class>
</hibernate-mapping>
错误就出在一的这一方,在set中,有一个<key column="ggroup"></key>其中的这个column必须与多的那一端配置时指定的column相同,否则就错了。