Hibernate Books

All times are UTC - 5 hours [ DST ]



Post new topic Reply to topic  [ 2 posts ] 
Author Message
 Post subject: Batch update error
PostPosted: Tue Jul 26, 2011 6:58 pm 
Newbie

Joined: Tue Jul 26, 2011 6:46 pm
Posts: 10
I am trying to learn hibernate through simple application but I keep getting org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update error. Below are the details of my code:

DB (PostGreSQL) table:


Code:
-- Table: "User"

-- DROP TABLE "User";

CREATE TABLE "User"
(
  id integer NOT NULL,
  "name" text,
  lastname text,
  CONSTRAINT id PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE "User" OWNER TO postgres;


Following is the User class. I read somewhere while trying to solve this issue that it could be because of uppercase in the naming so all the attributes are named in lower case:

Code:
package mypack;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "User")
public class User {

   private Integer id;
   private String name;
   private String lastname;

   @Id
   @GeneratedValue(strategy = GenerationType.SEQUENCE)
   @Column(name = "id", unique = true, nullable = false)
   public Integer getid() {
      return id;
   }

   public void setid(Integer id) {
      this.id = id;
   }

   @Column(name = "name", unique = false, nullable = false)
   public String getname() {
      return name;
   }

   public void setname(String name) {
      this.name = name;
   }

   @Column(name = "lastname", unique = false, nullable = false)
   public String getlastname() {
      return lastname;
   }

   public void setlastname(String lastName) {
      this.lastname = lastName;
   }

}


The hibernate.cfg.xml is:

Code:
<?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="hibernate.connection.driver_class">org.postgresql.Driver</property>
         <property name="hibernate.connection.url">jdbc:postgresql://localhost/test</property>
         <property name="hibernate.connection.username">postgres</property>
         <property name="connection.password">root</property>
         <property name="connection.pool_size">1</property>
         <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
         <property name="show_sql">true</property>
         <property name="hbm2ddl.auto">create</property>
         <mapping class="mypack.User"/>         
      </session-factory>
</hibernate-configuration>


And the util class is:

Code:
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class HibernateUtil {
   private static SessionFactory sessionFactory;

   static {
      try {
         sessionFactory = new AnnotationConfiguration().configure()
               .buildSessionFactory();
      } catch (Throwable t) {
         t.printStackTrace();
      }
   }

   public static SessionFactory getInstance() {
      return sessionFactory;
   }
}


The exception I get when I try to save a new object of the User class in a newly created DB is:

Code:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Hibernate: select nextval ('hibernate_sequence')
Hibernate: insert into User (lastname, name, id) values (?, ?, ?)
org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
   at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92)
   at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
   at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
   at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:268)
   at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:184)
   at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
   at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
   at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)
   at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:383)
   at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:133)
   at TestConnection.saveUser(TestConnection.java:25)
   at TestConnection.main(TestConnection.java:13)
Caused by: java.sql.BatchUpdateException: Batch entry 0 insert into User (lastname, name, id) values ('rajpathak', 'hrishikesh', '10') was aborted.  Call getNextException to see the cause.
   at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2598)
   at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1836)
   at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:407)
   at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2737)
   at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
   at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
   ... 9 more


Can anyone guide?


Top
 Profile  
 
 Post subject: Re: Batch update error
PostPosted: Wed Jul 27, 2011 5:51 pm 
Newbie

Joined: Tue Jul 26, 2011 6:46 pm
Posts: 10
The error had nothing to do with Hibernate! "User" is reserved keyword in PostgreSQL. I renamed it to MyUser and it worked!


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.