一个非常奇怪的问题,你回答了一定有成就感。
小弟最近在使用hibernate做一个简单实践的时候出现一个非常奇怪的问题,先将我本机环境说一下myeclipse+mysql5
没有使用中间件,插入数据和得到数据显示,我是直接在myeclipse控制台打印出来的。
1.在mysql上建立表
2.工程加入hibernate支持,在hibernate 的date视图上直接将表反转生成相关代码,唯一修改代码的Student.hbm.xml 内容如下:
3.我写了一个类来验证studentDao的 save()方法
4.如果mysql数据库没有数据的话插入正常,如果有数据则提示如下错误
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Hibernate:
select
max(id)
from
student
Hibernate:
insert
into
db.student
(userName, age, sex, id)
values
(?, ?, ?, ?)
Exception in thread "main" org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:202)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:139)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:297)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:985)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:333)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at test.testDate.main(testDate.java:24)
Caused by: java.sql.BatchUpdateException: Duplicate entry '3' for key 'PRIMARY'
at com.mysql.jdbc.ServerPreparedStatement.executeBatch(ServerPreparedStatement.java:853)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:58)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:195)
... 8 more
请问何解???求达人赐教,在线等啊!!!!!!!
没有使用中间件,插入数据和得到数据显示,我是直接在myeclipse控制台打印出来的。
1.在mysql上建立表
-- Table "student" DDL
CREATE TABLE `student` (
`id` int(100) NOT NULL AUTO_INCREMENT,
`username` varchar(100) DEFAULT NULL,
`sex` varchar(10) DEFAULT NULL,
`age` int(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=gbk;
2.工程加入hibernate支持,在hibernate 的date视图上直接将表反转生成相关代码,唯一修改代码的Student.hbm.xml 内容如下:
<hibernate-mapping>
<class name="dao.Student" table="student" catalog="db">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="increment" />
</id>
<property name="userName" type="java.lang.String">
<column name="userName" length="100" />
</property>
<property name="age" type="java.lang.Integer">
<column name="age" />
</property>
<property name="sex" type="java.lang.String">
<column name="sex" length="10" />
</property>
</class>
</hibernate-mapping>3.我写了一个类来验证studentDao的 save()方法
package test;
import java.util.List;
import org.hibernate.Transaction;
import dao.Student;
import dao.StudentDAO;
public class testDate {
/**
* @param args
*/
public static void main(String[] args) {
StudentDAO dao = new StudentDAO();
Student stu = new Student();
stu.setUserName("wwww");
stu.setSex("女");
stu.setAge(24);
Transaction t = dao.getSession().beginTransaction();
dao.save(stu);
t.commit();
//StudentDAO dao = new StudentDAO();
List<Student> stus = dao.findAll();
for(Student st: stus){
System.out.println(st.getId());
System.out.println(st.getUserName());
}
}
}
4.如果mysql数据库没有数据的话插入正常,如果有数据则提示如下错误
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Hibernate:
select
max(id)
from
student
Hibernate:
insert
into
db.student
(userName, age, sex, id)
values
(?, ?, ?, ?)
Exception in thread "main" org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:202)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:139)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:297)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:985)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:333)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at test.testDate.main(testDate.java:24)
Caused by: java.sql.BatchUpdateException: Duplicate entry '3' for key 'PRIMARY'
at com.mysql.jdbc.ServerPreparedStatement.executeBatch(ServerPreparedStatement.java:853)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:58)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:195)
... 8 more
请问何解???求达人赐教,在线等啊!!!!!!!
...全文
相关推荐
一个奇怪的问题使用ajax提交必须alert才能赋值
一个奇怪的问题,在使用ajax提交的时候将返回值赋给一个变量,无论怎么写都没法赋值,刚开始怀疑js有错但是ie没有反应过来,多次清缓存、部程序都没效果。。。。。。最后只好一行一行的alert看原因出在哪里;奇怪的是加上了alert之后就可以赋值,删掉alert后就又不可以了。百度了一下发现是因为ajax默认是异步执行的,也就是并没有等待请求完毕就开始执行下一行js语句了,导致赋值为null。 如果遇到ajax请求后有回调函数之类的问题就要加上async:false,注意如果是给false加上引号是没发解决问题的。 代码如下: $.ajax({ async:false })
什么是奇怪的数列以及学习了解奇怪的数列的意义是什么
奇怪的数列
一个奇怪的问题ppt(沪教版)PPT课件.ppt
一个奇怪的问题ppt(沪教版)PPT课件.ppt
c++奇怪的魔塔
c++期末大作业,包含所学的各种知识点,代码易懂不超纲
一年级语文下册 一个奇怪的问题1教案 沪教版 教案.doc
一年级语文下册 一个奇怪的问题1教案 沪教版 教案.doc


