Hibernate之org.hibernate.exception.GenericJDBCException:could not execute statement

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

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要指明是单独出来的第三张表,千万不能写错。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值