100分,急 org.hibernate.AssertionFailure: null id in com.alpha.bean.AnswerInfo ent
项目会不定期的出现这个问题。数据库是mysql的。而且id是自增,也不是null的。而且是在查询的时候出现的。
异常信息:
- Java code
org.hibernate.AssertionFailure: null id in com.alpha.bean.AnswerInfo entry (don't flush the Session after an exception occurs)
xml配置:
- XML code
<id name="id" type="java.lang.Integer"> <column name="id" /> <generator class="native"></generator> </id> <property name="qid" type="java.lang.Integer"> <column name="qId" /> </property> <property name="content" type="java.lang.String"> <column name="content" length="5000" /> </property> <property name="adate" type="java.util.Date"> <column name="aDate" length="19" /> </property> <property name="aid" type="java.lang.Integer"> <column name="aId" /> </property> <property name="ip" type="java.lang.String"> <column name="ip" length="20" /> </property> <property name="status" type="java.lang.Integer"> <column name="status" /> </property> <property name="remark1" type="java.lang.String"> <column name="remark1" length="200" /> </property> <property name="remark2" type="java.lang.String"> <column name="remark2" length="200" /> </property> <property name="remark3" type="java.lang.String"> <column name="remark3" length="200" /> </property> <property name="remark4" type="java.lang.String"> <column name="remark4" length="200" /> </property>
sql :
- SQL code
CREATE TABLE `voteResuleInfo` ( `id` int(11) unsigned zerofill NOT NULL auto_increment, `voteQuestionId` int(11) default NULL, `voteSelectId` int(11) default NULL, `ip` varchar(20) default NULL, `voteDate` datetime default NULL, `remark` varchar(200) default NULL, `remark2` varchar(200) default NULL, `remark3` varchar(200) default NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8
[解决办法]
你加个断点跟着看看,看看session
[解决办法]
楼主手动插入一条数据到数据库 看看是否自增
难道主键重复?
[解决办法]
既然是flush,这问题感觉应该是无法成功将内存或者说session中的数据同步至数据库中
表象就是entry中的id为null,原因有很多,查到两个比如:
http://blog.163.com/woshihezhonghua@126/blog/static/12714363620091148170437/
http://java.999it.net/?viewnews-115
p.s. don't flush the Session after an exception occurs
这个提示感觉挺无奈的,异常发生和flush session对用户来说应该是在一个原子操作里的吧
[解决办法]
想问下你的添加数据的方法是自己写的,还是继承了HibernateDaoSupport?
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native"> </generator>
</id>
没用过native本地id 自增
方向生成生成配置文件时,最好是选sequence
<generator class="sequence ">
<param name="sequence">seq_xxx</param>
</generator>
给它单独配个seq
[解决办法]
[解决办法]
应该是 hibernate事务 同步的 问题,,