ERROR: Field 'rempid' doesn't have adefault value
2016-3-1 21:07:20 org.hibernate.engine.jdbc.batch.internal.AbstractBatchImplrelease
INFO: HHH000010: On release of batchit still contained JDBC statements
Exception in thread "main" org.hibernate.exception.GenericJDBCException:could not execute statement
员工与项目多对多的关联映射关系
many2many.sql:
create table project
(
proid int primary key,
proname varchar(20)
);
create table employee
(
empid int primary key,
empname varchar(20)
);
create table proemp
(
rproid int,
rempid int
);
alter table proemp add constraint fk_rproid
foreign key (rproid) references project(proid);
alter table proemp add constraint fk_rempid
foreign key (rempid) references employee(empid);
在员工映射文件Employee.hbm.xml中:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.imooc.entity.Employee" table="employee">
<id name="empid" column="empid" type="java.lang.Integer">
<generator class="assigned"></generator>
</id>
<property name="empname" type="java.lang.String">
<column name="empname" length="20" not-null="true"></column>
</property>
<!-- 配置多对多的关联映射 -->
<set name="project" table="project" inverse="true">
<key column="rempid"></key>
<many-to-many class="com.imooc.entity.Project" column="rproid"></many-to-many>
</set>
</class>
</hibernate-mapping>
因为表proemp是从project和employee两张表独立出来的,rempid是proemp的主键也是外键。
在映射文件中多对多的配置出现错误,此处的table应该为proemp。
映射文件多对多的配置table要指明是单独出来的第三张表,千万不能写错。

本文介绍了一个关于Hibernate框架中多对多关联映射的常见错误案例,并详细解释了如何正确配置Employee与Project之间的多对多关系,避免因表名配置错误导致的问题。
692

被折叠的 条评论
为什么被折叠?



