File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Object Relational Mapping and the fly likes GenerationType.AUTO Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Databases » Object Relational Mapping
Bookmark "GenerationType.AUTO" Watch "GenerationType.AUTO" New topic


anagha desai

Joined: May 08, 2008
Posts: 22
Hello I am trying a simple example using JPA with HSQLDB

When I try the above setting I get the exception :

When I try and use SEQUENCE it works fine

Questions ::
1 >
Istnt Auto meaning the persistence provider will choose the best strategy to generate PK ?
So why wastnt it able to do so ?

Marco Ehrentreich
best scout

Joined: Mar 07, 2007
Posts: 1294

Hi anagha,

the API documentation says:
AUTO - Indicates that the persistence provider should pick an appropriate strategy for the particular database.

And this usually works as expected. The question is: What exactly are you trying to do? Without any code or error messages it's really hard for others to help you

Do you use the persist() method of the EntityManager instance? This is necessary to automatically get an auto-generated PK assigned to you entity!

Cameron Wallace McKenzie
author and cow tipper
Saloon Keeper

Joined: Aug 26, 2006
Posts: 4968


The AUTO generation strategy is the default, and this setting simply chooses the primary key generation strategy that is the default for the database in question, which quite typically is IDENTITY, although it might be TABLE or SEQUENCE depending upon how the database is configured. The AUTO strategy is typically recommended, as it makes your code and your applications most portable.

Hibernate Generation Strategies Tutorial

The default should be IDENTITY, but it seems that is not happening in your application. One thing I might do is explicilty state IDENTITY as the auto-generation strategy, and see if it works. If it does, then something is wrong with the AUTO setting. If it doesn't, then it just looks like your database doesn't support IDENTITY.

Give it a try and report back.

-Cameron McKenzie
I agree. Here's the link:
subject: GenerationType.AUTO
It's not a secret anymore!