org.hibernate.exception.ConstraintViolationException: Could not execute JDBC

JBaresark 2013-06-10 11:21:09
SSH删除操作的时候出现了这个错误,我也网上查了一下解决方法,但没能解决,希望得到大家的帮助,谢谢了
Hibernate: select students0_.stu_no as stu1_1_0_, students0_.col_no as col2_1_0_, students0_.class_no as class3_1_0_, students0_.dept_no as dept4_1_0_, students0_.stu_name as stu5_1_0_, students0_.stu_sex as stu6_1_0_, students0_.stu_birthday as stu7_1_0_, students0_.nativeplace as nativepl8_1_0_, students0_.telphone as telphone1_0_, students0_.mianmao as mianmao1_0_, students0_.cometime as cometime1_0_ from jrmtkq.students students0_ where students0_.stu_no=?
Hibernate: select stuusers0_.stu_no as stu1_1_, stuusers0_.stu_no as stu1_0_0_, stuusers0_.pwd as pwd0_0_ from jrmtkq.stuuser stuusers0_ where stuusers0_.stu_no=?
Hibernate: delete from jrmtkq.students where stu_no=?
29854 [http-apr-8089-exec-4] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 1451, SQLState: 23000
29854 [http-apr-8089-exec-4] ERROR org.hibernate.util.JDBCExceptionReporter - Cannot delete or update a parent row: a foreign key constraint fails (`jrmtkq`.`stuuser`, CONSTRAINT `user_fk2` FOREIGN KEY (`stu_no`) REFERENCES `students` (`stu_no`))
29854 [http-apr-8089-exec-4] ERROR org.hibernate.event.def.AbstractFlushingEventListener - Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:94)

at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:172)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)

at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1028)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:366)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:655)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:732)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:701)

at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:321)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:116)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy4.delStudent(Unknown Source)
at jrmt.service.StudentServiceImp.delStudent(StudentServiceImp.java:33)

at jrmt.controller.StudentAction.delStudent(StudentAction.java:95)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)

at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)

at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)


Caused by: java.sql.BatchUpdateException: Cannot delete or update a parent row: a foreign key constraint fails (`jrmtkq`.`stuuser`, CONSTRAINT `user_fk2` FOREIGN KEY (`stu_no`) REFERENCES `students` (`stu_no`))

at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1693)
at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1108)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
... 90 more
数据库设计部分
create database jrmtkq;
use jrmtkq;
--学院表
create table colleges(
col_no char(10) primary key,
col_name varchar(40) not null
)
--专业信息表
create table depts(
dept_no char(10) primary key,
col_no char(10) not null,
dept_name varchar(40),
constraint dept_fk foreign key(col_no)
references colleges(col_no)
)
--班级信息表
create table classes(
class_no char(10) primary key,
dept_no char(10) not null,
col_no char(10) not null,
class_name varchar(20) not null,
constraint classes_fk1 foreign key(dept_no)
references depts(dept_no),
constraint classes_fk2 foreign key(col_no)
references colleges(col_no)
)
--课程信息表
create table course(
cou_no char(16) primary key,
cou_name varchar(40) not null,
xuefen numeric(4,1) not null,
col_no char(10) not null,
dept_no char(10) not null,
constraint cou_fk1 foreign key(dept_no)
references depts(dept_no),
constraint cou_fk2 foreign key(col_no)
references colleges(col_no)
)
--学生表
create table students(
stu_no char(20) primary key,
stu_name varchar(30) not null,
stu_sex char(6)
check(stu_sex='male' or stu_sex='female'),
stu_birthday date,
nativeplace varchar(80),
col_no char(10) not null,
dept_no char(10) not null,
class_no char(10) not null,
telphone char(16) not null,
mianmao varchar(10) not null,
cometime date not null,
constraint stu_fk1 foreign key(class_no)
references classes(class_no),
constraint stu_fk2 foreign key(dept_no)
references depts(dept_no),
constraint stu_fk3 foreign key(col_no)
references colleges(col_no)
)
部分省略.....
...全文
677 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
JBaresark 2013-06-11
  • 打赏
  • 举报
回复
问题已经解决了,是一个很低级的错误,因为我表之间设定了关联,所以属性值不能为not null。 解决方法是出了主键的属性设置为允许空就好了

10,606

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 其他
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧