配hibernate的时候,老报:org.hibernate.exception.DataException: Could not execute JDBC batch update

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配hibernate的时候,老报:org.hibernate.exception.DataException: Could not execute JDBC batch update相关的知识,希望对你有一定的参考价值。

public class HibernateManager
private static Integer sdeptno;
private static Integer sempno;
private static Integer sComm;
private static String setComs;

public static void main(String[] args)
Configuration conf = new Configuration().configure();
SessionFactory sf = conf.buildSessionFactory();
Session sess = sf.openSession();
Transaction tx = sess.beginTransaction();

test01DO tes1 = new test01DO();
// tes1.setComm(22);
// tes1.setComments("hl");
// tes1.setDeptno(20);
// tes1.setEmpno(10);
// tes1.setEname("doy");
// tes1.setGender("som");
// tes1.setHiredate(new DATE());
// tes1.setJob("it");
// tes1.setMgr(20);
// tes1.setPhoto("pc");
// tes1.setSal(30);
sess.save(tes1);
tx.commit();
sess.close();
sf.close();




没用注释的部分插入空po,可以执行,没报任何错误,注释掉之后就报上面的错误。

1.因为Hibernate Tools(或者Eclipse本身的Database Explorer)生成*.hbn.xml工具中包含有catalog="***"(*表示数据库名称)这样的属性,将该属性删除就可以了
2.估计是你的列名里面有关键字的原因吧,命名列的时候不要单独使用date,ID...这种关键字
参考技术A 按照你的说法"没用注释的部分插入空po,可以执行,没报任何错误。",有可能是你的实体类总的数据类型与数据库中字段的类型对应的不一致,导致更新的时候出错.比如数据库是number类型,但是你在实体中设置为string.检查一下,看看. 初步怀疑是"// tes1.setHiredate(new DATE());"的问题,你把其他的注释都去掉,只保留它看看,应该也不报错吧,本回答被提问者采纳 参考技术B 这个很难说清楚,有很多的情况会发生这种错误,起码要有错误详细信息和代码才能看 .

你是不是设值得时候,给主键设了值,但是不符合你自己hbm.xml所配置的主键生成规则?

Hibernate的主配置文件hibernate.cfg.xml

1:Hibernate的主配置文件的名字必须是hibernate.cfg.xml:

  1.1:主配置文件主要分为三部分:

    注意:通常情况下,一个session-factory节点代表一个数据库;

    1.1.1:第一部分

       数据库连接部分,注意"hibernate.connection.driver_class"中间的 _(杠);

    1.1.2:第二部分

       其他相关配置,包含打印sql语句,格式化sql语句,创建数据表或者更新数据表等等

    1.1.3:第三部分

       加载所有的映射;  

 1 <!DOCTYPE hibernate-configuration PUBLIC
 2     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 3     "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
 4 
 5 <hibernate-configuration>
 6     <!-- 通常,一个session-factory节点代表一个数据库  -->
 7     <session-factory>
 8         <!-- (1):数据连接配置/(2):加载所有的映射(*.hbm.xml)-->
 9          
10          <!-- 第一部分:数据连接配置 -->
11          <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
12          <property name="hibernate.connection.url">jdbc:mysql:///test</property>
13          <property name="hibernate.connection.username">root</property>
14          <property name="hibernate.connection.password">123456</property>
15          <!-- 数据库方法配置:mysql数据库的方言 
16                hibernate在运行的时候,会根据不同的方言生成符合当前数据库语法的sql
17          -->
18          <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
19          
20          <!-- 第二部分:其他相关配置 -->
21          <!-- 2.1:hibernate.show_sql显示hibernate运行时候执行的sql语句 -->
22          <property name="hibernate.show_sql">true</property>
23          <!-- 2.2:格式化sql -->
24          <property name="hibernate.format_sql">true</property>
25          <!-- 2.3:自动建表 -->
26          <property name="hibernate.hbm2ddl.auto">create</property>
27          <!-- <property name="hibernate.hbm2ddl.auto">update</property>
28           -->
29          <!-- 
30              每次在创建sessionFactory时执行创建表,当调用sessionFactory的close方法的时候,删除表
31              #hibernate.hbm2ddl.auto create-drop
32             每次都重新建表,如果已经存在就先删除再创建
33             #hibernate.hbm2ddl.auto create
34             如果表不存在就创建,表存在就不创建
35             #hibernate.hbm2ddl.auto update
36             生成环境时候执行验证,当映射文件的内容与数据库表结构不一样的时候就报错
37             #hibernate.hbm2ddl.auto validate
38           --> 
39           
40          
41          <!-- 第三部分:加载所有的映射(*.hbm.xml) -->
42          <mapping resource="com/bie/po/User.hbm.xml"/>
43          
44     </session-factory>
45 </hibernate-configuration>

Hibernate的核心==》hibernate的映射,掌握核心技术,下篇见。

以上是关于配hibernate的时候,老报:org.hibernate.exception.DataException: Could not execute JDBC batch update的主要内容,如果未能解决你的问题,请参考以下文章

Java EE 之 Hibernate异常解决:org.hibernate.exception.SQLGrammarException: could not execute statement(示例代

Pythonxpath中为什么粘贴进去代码后老报错?如何在定位元素的时候准确找到定位切入点?

hibernate和tomcat的连接池问题

hibernate 表名为变量的映射文件 怎么配。 如何用?

JPA - 更新二进制数据

hibernate实现多表联合查询