<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[JavaRanch: Latest posts for the topic "Hibernate: Mapping a sequence to a serial (autoincr) field (Postgresql)"]]></title>
		<link>http://www.coderanch.com/forums/t/78/Object-Relational-Mapping/Hibernate-Mapping-sequence-serial-autoincr</link>
		<description><![CDATA[Latest messages posted in the topic "Hibernate: Mapping a sequence to a serial (autoincr) field (Postgresql)"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>Hibernate: Mapping a sequence to a serial (autoincr) field (Postgresql)</title>
				<description><![CDATA[Heya Ranchers,<br /> <br /> I never really used Hibernate before, in fact I use it since yesterday. After I successfully found <br /> all the required libraries on internet, I made fictional classes and <br /> tables about a library.<br /> <br /> Basically this is my class diagram:<br /> <img src="http://img141.imageshack.us/img141/9479/libraryua3.png" border="0" /><br /> <br /> My goal is to check how hibernate handles inheritance. However when I'm trying to insert an author into my database I get the following error:<br /> <blockquote class="uncited">
			<div><br /> 63 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.3.1.GA<br /> 110 [main] INFO org.hibernate.cfg.Environment - hibernate.properties not found<br /> 125 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist<br /> 156 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 <a href="http://java.sun.com/javase/6/docs/api/java/sql/Timestamp.html" class="api" title="Java API" target="_new" rel="nofollow">java.sql.Timestamp</a> handling<br /> 391 [main] INFO org.hibernate.cfg.Configuration - configuring from resource: /hibernate.cfg.xml<br /> 391 [main] INFO org.hibernate.cfg.Configuration - Configuration resource: /hibernate.cfg.xml<br /> 953 [main] INFO org.hibernate.cfg.Configuration - Reading mappings from resource : Author.hbm.xml<br /> 1281 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: Author -&gt; authors<br /> 1375 [main] INFO org.hibernate.cfg.Configuration - Reading mappings from resource : Book.hbm.xml<br /> 1485 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: Book -&gt; books<br /> 1906 [main] INFO org.hibernate.cfg.Configuration - Reading mappings from resource : Novel.hbm.xml<br /> 2031 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: Novel -&gt; novels<br /> 2047 [main] INFO org.hibernate.cfg.Configuration - Reading mappings from resource : Comic.hbm.xml<br /> 2141 [main] INFO org.hibernate.cfg.HbmBinder - Mapping class: Comic -&gt; comics<br /> 2156 [main] INFO org.hibernate.cfg.Configuration - Configured SessionFactory: null<br /> 2172 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Using Hibernate built-in connection pool (not for production use!)<br /> 2172 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Hibernate connection pool size: 1<br /> 2188 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - autocommit mode: false<br /> 2313 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - using driver: org.postgresql.Driver at URL: jdbc:postgresql://localhost/TestHibernate<br /> 2313 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - connection properties: {user=postgres, password=****}<br /> 2641 [main] INFO org.hibernate.cfg.SettingsFactory - RDBMS: PostgreSQL, version: 8.2.4<br /> 2641 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC driver: PostgreSQL Native Driver, version: PostgreSQL 8.3 JDBC4 with SSL (build 604)<br /> 2719 [main] INFO org.hibernate.dialect.Dialect - Using dialect: org.hibernate.dialect.HSQLDialect<br /> 2735 [main] INFO org.hibernate.transaction.TransactionFactoryFactory - Using default transaction strategy (direct JDBC transactions)<br /> 2735 [main] INFO org.hibernate.transaction.TransactionManagerLookupFactory - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)<br /> 2735 [main] INFO org.hibernate.cfg.SettingsFactory - Automatic flush during beforeCompletion(): disabled<br /> 2735 [main] INFO org.hibernate.cfg.SettingsFactory - Automatic session close at end of transaction: disabled<br /> 2735 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC batch size: 15<br /> 2735 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC batch updates for versioned data: disabled<br /> 2750 [main] INFO org.hibernate.cfg.SettingsFactory - Scrollable result sets: enabled<br /> 2750 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC3 getGeneratedKeys(): disabled<br /> 2750 [main] INFO org.hibernate.cfg.SettingsFactory - Connection release mode: auto<br /> 2766 [main] INFO org.hibernate.cfg.SettingsFactory - Default batch fetch size: 1<br /> 2766 [main] INFO org.hibernate.cfg.SettingsFactory - Generate SQL with comments: disabled<br /> 2766 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL updates by primary key: disabled<br /> 2766 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL inserts for batching: disabled<br /> 2766 [main] INFO org.hibernate.cfg.SettingsFactory - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory<br /> 2766 [main] INFO org.hibernate.hql.ast.ASTQueryTranslatorFactory - Using ASTQueryTranslatorFactory<br /> 2766 [main] INFO org.hibernate.cfg.SettingsFactory - Query language substitutions: {}<br /> 2766 [main] INFO org.hibernate.cfg.SettingsFactory - JPA-QL strict compliance: disabled<br /> 2766 [main] INFO org.hibernate.cfg.SettingsFactory - Second-level cache: enabled<br /> 2781 [main] INFO org.hibernate.cfg.SettingsFactory - Query cache: disabled<br /> 2797 [main] INFO org.hibernate.cfg.SettingsFactory - Cache region factory : org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge<br /> 2797 [main] INFO org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge - Cache provider: org.hibernate.cache.NoCacheProvider<br /> <b>Hibernate: call next value for authors_id_seq</b><br /> 2797 [main] INFO org.hibernate.cfg.SettingsFactory - Optimize cache for minimal puts: disabled<br /> 2797 [main] INFO org.hibernate.cfg.SettingsFactory - Structured second-level cache entries: disabled<br /> 2813 [main] INFO org.hibernate.cfg.SettingsFactory - Echoing all SQL to stdout<br /> 2813 [main] INFO org.hibernate.cfg.SettingsFactory - Statistics: disabled<br /> 2813 [main] INFO org.hibernate.cfg.SettingsFactory - Deleted entity synthetic identifier rollback: disabled<br /> 2813 [main] INFO org.hibernate.cfg.SettingsFactory - Default entity-mode: pojo<br /> 2828 [main] INFO org.hibernate.cfg.SettingsFactory - Named query checking : enabled<br /> 3047 [main] INFO org.hibernate.impl.SessionFactoryImpl - building session factory<br /> 3891 [main] INFO org.hibernate.impl.SessionFactoryObjectFactory - Not binding factory to JNDI, no JNDI name configured<br /> 4360 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 0, SQLState: 42601<br /> <b>4375 [main] ERROR org.hibernate.util.JDBCExceptionReporter - ERROR: syntax error at or near &quot;call&quot;<br /> Exception in thread &quot;main&quot; org.hibernate.exception.SQLGrammarException: could not get next sequence value<br /> 	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)<br /> 	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)<br /> 	at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:119)<br /> 	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:122)<br /> 	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)<br /> 	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)<br /> 	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117)<br /> 	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)<br /> 	at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:534)<br /> 	at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:526)<br /> 	at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:522)<br /> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br /> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br /> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br /> 	at java.lang.reflect.Method.invoke(Method.java:597)<br /> 	at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:342)<br /> 	at $Proxy0.saveOrUpdate(Unknown Source)<br /> 	at TestHibernate.main(TestHibernate.java:13)<br /> Caused by: org.postgresql.util.PSQLException: ERROR: syntax error at or near &quot;call&quot;<br /> 	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1608)<br /> 	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1343)<br /> 	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:194)<br /> 	at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451)<br /> 	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350)<br /> 	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:254)<br /> 	at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:98)<br /> 	... 15 more</b><br /> </div>
		</blockquote><br /> <br /> Since I'm a new child with Posgresql and Hibernate, I don't know where to head to solve my problem. I tried to log the queries made by Hibernate, but I got now luck. <br /> <br /> Any ideas?<br /> <br /> <b>SQL</b><br /> <pre>
CREATE DATABASE &quot;TestHibernate&quot;
  WITH OWNER = postgres
       ENCODING = 'UTF8'
       TABLESPACE = pg_default;

CREATE TABLE authors
(
  id bigserial NOT NULL,
  name character varying(150) NOT NULL,
  CONSTRAINT authors_pkey PRIMARY KEY (id)
) 
WITHOUT OIDS;
ALTER TABLE authors OWNER TO postgres;

CREATE SEQUENCE authors_id_seq
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;
ALTER TABLE authors_id_seq OWNER TO postgres;



CREATE TABLE books
(
  id bigserial NOT NULL,
  isbn character varying(25) NOT NULL,
  title character varying(250) NOT NULL,
  author bigint,
  price money,
  CONSTRAINT books_pkey PRIMARY KEY (id),
  CONSTRAINT books_author_fkey FOREIGN KEY (author)
      REFERENCES authors (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT books_isbn_key UNIQUE (isbn)
) 
WITHOUT OIDS;
ALTER TABLE books OWNER TO postgres;

CREATE SEQUENCE books_id_seq
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;
ALTER TABLE books_id_seq OWNER TO postgres;

CREATE TABLE comics
(
  id bigint NOT NULL,
  drawer bigint,
  CONSTRAINT comics_pkey PRIMARY KEY (id),
  CONSTRAINT comics_drawer_fkey FOREIGN KEY (drawer)
      REFERENCES authors (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT comics_id_fkey FOREIGN KEY (id)
      REFERENCES books (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
) 
WITHOUT OIDS;
ALTER TABLE comics OWNER TO postgres;

CREATE TABLE novels
(
  id bigint NOT NULL,
  &quot;pageCount&quot; integer,
  CONSTRAINT novels_pkey PRIMARY KEY (id),
  CONSTRAINT novels_id_fkey FOREIGN KEY (id)
      REFERENCES books (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
) 
WITHOUT OIDS;
ALTER TABLE novels OWNER TO postgres;
</pre><br /> <br /> <b>hibernate.cfg.xml</b><br /> <pre>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;!DOCTYPE hibernate-configuration PUBLIC &quot;-//Hibernate/Hibernate Configuration DTD 3.0//EN&quot; &quot;http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd&quot;&gt;
&lt;hibernate-configuration&gt;
	&lt;session-factory&gt;
		&lt;property name=&quot;connection.driver_class&quot;&gt;org.postgresql.Driver&lt;/property&gt;
		&lt;property name=&quot;connection.url&quot;&gt;jdbc:postgresql://localhost/TestHibernate&lt;/property&gt;
		&lt;property name=&quot;connection.username&quot;&gt;postgres&lt;/property&gt;
		&lt;property name=&quot;connection.password&quot;&gt;qwerty&lt;/property&gt;
		
		&lt;property name=&quot;connection.pool_size&quot;&gt;1&lt;/property&gt;
		&lt;property name=&quot;dialect&quot;&gt;org.hibernate.dialect.HSQLDialect&lt;/property&gt;
		&lt;property name=&quot;current_session_context_class&quot;&gt;thread&lt;/property&gt;
		&lt;property name=&quot;cache.provider_class&quot;&gt;org.hibernate.cache.NoCacheProvider&lt;/property&gt;
		&lt;property name=&quot;show_sql&quot;&gt;true&lt;/property&gt;

		&lt;mapping resource=&quot;Author.hbm.xml&quot;/&gt;
		&lt;mapping resource=&quot;Book.hbm.xml&quot;/&gt;
		&lt;mapping resource=&quot;Novel.hbm.xml&quot;/&gt;
		&lt;mapping resource=&quot;Comic.hbm.xml&quot;/&gt;
	&lt;/session-factory&gt;
&lt;/hibernate-configuration&gt;
</pre><br /> <br /> <b>Author.hbm.xml</b><br /> <pre>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;!DOCTYPE hibernate-mapping PUBLIC &quot;-//Hibernate/Hibernate Mapping DTD 3.0//EN&quot; &quot;http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd&quot;&gt;
&lt;hibernate-mapping&gt;
	&lt;class name=&quot;Author&quot; table=&quot;authors&quot;&gt;
		&lt;id name=&quot;id&quot; unsaved-value=&quot;null&quot;&gt;
			&lt;generator class=&quot;sequence&quot;&gt;
				&lt;param name=&quot;sequence&quot;&gt;authors_id_seq&lt;/param&gt;
			&lt;/generator&gt;
		&lt;/id&gt;
		&lt;property name=&quot;name&quot; /&gt;
	&lt;/class&gt;
&lt;/hibernate-mapping&gt;
</pre><br /> <br /> <b>TestHibernate.java</b><br /> <pre>
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class TestHibernate {
	public static void main(String[] args) {
		SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		
		Author a1 = new Author(&quot;Maurice&quot;);
		session.saveOrUpdate(a1);
		
		session.getTransaction().commit();
		sessionFactory.close();
		
		/*Book b1 = new Roman(&quot;1321465-65&quot;, &quot;Maurice au pays des merveilles&quot;, a1, 455, 65.22);
		session.update(b1);
		
		Author a2 = new Author(&quot;Linda&quot;);
		session.update(a2);
		
		Book b2 = new Roman(&quot;735r461-32&quot;, &quot;Les aventures de Linda&quot;, a2, 45, 25.39);
		session.update(b2);
				
		session.getTransaction().commit();
		sessionFactory.close();*/
	}
}
</pre><br /> <br /> <b>Author.java</b><br /> <pre>
public class Author {
	private Integer id;
	private String name;
	
	public Author(String name) {
		this(null, name);
	}
	
	public Author() {
		this(null);
	}
	
	private Author(Integer id, String name) {
		this.id = id;
		this.name = name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	private void setId(Integer id) {
		this.id = id;
	}

	public Integer getId() {
		return id;
	}
}
</pre><br /> ]]></description>
				<guid isPermaLink="true">http://www.coderanch.com/forums/posts/preList/426247/1890696</guid>
				<link>http://www.coderanch.com/forums/posts/preList/426247/1890696</link>
				<pubDate><![CDATA[Wed, Jan 14 2009 10:21:27 MST]]></pubDate>
				<author><![CDATA[Samuel Cadieux]]></author>
			</item>
			<item>
				<title>Hibernate: Mapping a sequence to a serial (autoincr) field (Postgresql)</title>
				<description><![CDATA[Ah ha!<br /> <br /> I've found my mistake (that I copy/pasted from a tutorial).<br /> <br /> My problem was in the dialect specified in hibernate.cfg.xml. Basically Hibernate was trying to speak HSQL with Postgres.<br /> <br /> So I changed:<br /> <pre>&lt;property name="dialect"&gt;org.hibernate.dialect.HSQLDialect&lt;/property&gt;</pre><br /> <br /> To:<br /> <pre>&lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.PostgreSQLDialect&lt;/property&gt;</pre>]]></description>
				<guid isPermaLink="true">http://www.coderanch.com/forums/posts/preList/426247/1891575</guid>
				<link>http://www.coderanch.com/forums/posts/preList/426247/1891575</link>
				<pubDate><![CDATA[Thu, Jan 15 2009 10:04:03 MST]]></pubDate>
				<author><![CDATA[Samuel Cadieux]]></author>
			</item>
	</channel>
</rss>
