java 全程开发实录 第七章 欣想电子商城 用户注册模块不能使用一直出错。
发表在JavaWeb图书答疑 2015-05-04
是否精华
版块置顶:
HTTP Status 500 - Request processing failed; nested exception is org.hibernate.AssertionFailure: null id in com.lzw.model.TbMember entry (don't flush the Session after an exception occurs)

type Exception report

message Request processing failed; nested exception is org.hibernate.AssertionFailure: null id in com.lzw.model.TbMember entry (don't flush the Session after an exception occurs)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.AssertionFailure: null id in com.lzw.model.TbMember entry (don't flush the Session after an exception occurs)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:656)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

org.hibernate.AssertionFailure: null id in com.lzw.model.TbMember entry (don't flush the Session after an exception occurs)
org.hibernate.event.def.DefaultFlushEntityEventListener.checkId(DefaultFlushEntityEventListener.java:82)
org.hibernate.event.def.DefaultFlushEntityEventListener.getValues(DefaultFlushEntityEventListener.java:190)
org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:147)
org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:219)
org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:99)
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)
org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:383)
org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:133)
org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:656)
org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754)
org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)
org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:393)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:120)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:621)
com.lzw.dao.Dao$$EnhancerByCGLIB$$3c74af0f.insertObject(<generated>)
com.lzw.RegisterController.onSubmit(RegisterController.java:32)
org.springframework.web.servlet.mvc.SimpleFormController.onSubmit(SimpleFormController.java:387)
org.springframework.web.servlet.mvc.SimpleFormController.processFormSubmission(SimpleFormController.java:272)
org.springframework.web.servlet.mvc.AbstractFormController.handleRequestInternal(AbstractFormController.java:268)
com.lzw.RegisterController.handleRequestInternal(RegisterController.java:38)
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.54 logs.

Apache Tomcat/7.0.54
分享到:
精彩评论 1
菜鸟级精英
学分:0 LV1
TA的每日心情
开心
2020-03-23 21:05:48
2015-05-05
沙发
这个问题是由于表中主键未实现自增操作引起的。可以用两种方法修改(任选其一,不可多选):

1.修改数据库主键规则。(推荐这种)
打开Microsoft SQL server Managermeng Studio,找到db_shop数据库,打开表-dbo.tb_member,右键这个表,选择“修改”,点中第一列“ID”,在下面列属性中“标识规范”-“(是标识)”一栏选“是”。

2.修改hibernate插入主键规则。
在数据库中创建主键序列表,脚本如下:
create table hi_value(id int);
insert into hi_value values(1);

修改hibernate中会员的映射文件TbMember.hbm.xml:
  <id name="id" type="java.lang.Integer">
            <column name="ID" />
            <!-- <generator class="identity" /> 将此句注释,改成下面5行配置-->
            <generator class="hilo" >
            <param name="table">hi_value</param>
            <param name="column">id</param>
             <param name="max_lo">100</param>
            </generator>
        </id>
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照