views:

62

answers:

1

Hi,

The ids in my postgresql database are auto-incremental (there are sequences defined in a database). When creating a hibernate mapping files I set the class generator to increment:

<class name="model.Names" schema="public" table="names">
    <id name="id" type="int">
      <column name="id"/>
      <generator class="increment"/>
    </id>

However, I keep getting all kinds of errors (null pointer exceptions, org.hibernate.TransactionException: Transaction not successfully started) so I first wanted to make sure that this is the right generator class before debugging and looking for errors elsewhere. I tried sequence (does not work at all, the increment works in some cases). The application is written in JSF 2.0.

Thanks in advance for any suggestions.

Best Regards, sass.

A: 

If you want to use sequences, you should definitely use one of the sequence or seqhilo if you want a hi/lo algorithm generators. The problem is that "does not work at all" does not help at all to understand what problem you faced.

Just in case, here is a snippet for the sequence generator:

<id name="id" type="long" column="person_id">
        <generator class="sequence">
                <param name="sequence">person_id_sequence</param>
        </generator>
</id>

And for the seqhilo generator:

<id name="id" type="long" column="cat_id">
        <generator class="seqhilo">
                <param name="sequence">hi_value</param>
                <param name="max_lo">100</param>
        </generator>
</id>

If you want to investigate why it "does not work at all", I suggest to enable logging of the generated SQL to see what is happening.

Also note that PostgreSQL does support the identity generator (see HB-875 and HHH-1675) when using SERIAL or BIGSERIAL columns.

References

Pascal Thivent
Thanks, Pascal. The problem is that the only generator class that works is increment. When I tried to use the sequence, it would not add object in a database since obviously the id cannot be null which led me to the conclussion that I have to use a different generator class.
sass