用hibernate插入数据,明明插入成功了,但还是报错!!为啥啊???
package hibernates;import org.hibernate.Session;public class UserDao {
Session session=null;
public String saveMovie(Movie movie){
try{
session=CreateSession.getSession();
session.beginTransaction();
session.save(movie);
session.beginTransaction().commit();
return "true";
}catch(Exception e){
session.getTransaction().rollback();
return "false"+e.getLocalizedMessage();
}finally{
CreateSession.closeSession();
}
}
}我试了下,是session.beginTransaction().commit();这句话报出的错!
错误:Could not execute JDBC batch update但是明明成功插入数据了啊!!求解求解……高手给个解!!下面是movie表的配置文件Movie.hbm.xml:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="hibernates.Movie" table="movie" catalog="myweb">
<id name="id" type="java.lang.String">
<column name="id" length="45" />
</id>
<property name="name" type="java.lang.String">
<column name="name" length="45" />
</property>
</class>
</hibernate-mapping>这个是hibernate配置文件:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.url">jdbc:mysql://localhost:3306/myweb</property>
<property name="connection.username">root</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.password"></property>
<property name="hbm2ddl.auto">true</property> <mapping resource="hibernates/Movie.hbm.xml" /></session-factory></hibernate-configuration>
package hibernates;import org.hibernate.Session;public class UserDao {
Session session=null;
public String saveMovie(Movie movie){
try{
session=CreateSession.getSession();
session.beginTransaction();
session.save(movie);
session.beginTransaction().commit();
return "true";
}catch(Exception e){
session.getTransaction().rollback();
return "false"+e.getLocalizedMessage();
}finally{
CreateSession.closeSession();
}
}
}我试了下,是session.beginTransaction().commit();这句话报出的错!
错误:Could not execute JDBC batch update但是明明成功插入数据了啊!!求解求解……高手给个解!!下面是movie表的配置文件Movie.hbm.xml:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="hibernates.Movie" table="movie" catalog="myweb">
<id name="id" type="java.lang.String">
<column name="id" length="45" />
</id>
<property name="name" type="java.lang.String">
<column name="name" length="45" />
</property>
</class>
</hibernate-mapping>这个是hibernate配置文件:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.url">jdbc:mysql://localhost:3306/myweb</property>
<property name="connection.username">root</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.password"></property>
<property name="hbm2ddl.auto">true</property> <mapping resource="hibernates/Movie.hbm.xml" /></session-factory></hibernate-configuration>
解决方案 »
- 只用dom java 怎么格式化xml字符串
- 请教下杭州建达科技面试的时候会问些什么问题
- 关于B/S 模式取代 C/S模式 问题
- 昨天去一家公司面试的笔试题中的一个
- struts中UserAction.do找不到的问题
- 安装TOMCATde 问题
- 不是高手莫入,以免误人子弟 ,一个简单的问题 ???
- 谁知道哪里可以下到struts studio 5.0/5.1完整版的下载地址 高分求救!
- 请大家比较一下jboss与weblogic的优缺点,来者有份!
- 100。。。提一个很菜的问题
- Hibernate查询为何生成两条SQL语句
- MD5加密!!!!如何再将数据库中‘密文’还原成‘原文’显示在页面上
session.save(movie);
tx.commit();试试看。。
<id name="id" type="integer" column="id">
<generator class="assigned" />
</id>
个人觉得这两句有问题,,,第一次已经session.beginTransaction();了。。第二次又是一次session.beginTransaction().commit();你第一次的sesson事务已经打开,后面再次打开然后提交打开两次了而在第二次打开的时候,是同一个movie对象去提交,此实体已经存在,所以hibernate认为是更新操作了。所以就报错Could not execute JDBC batch update
所以报错了吧。这样试试可能正确。。
Transaction tx = session.beginTransaction();
session.save(movie);
tx.commit();
唉………………这么个低级的错误纠结了我两天!
多谢各位了!!