[
https://issues.apache.org/jira/browse/OPENJPA-1066?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12997420#comment-12997420
]
Vermeulen edited comment on OPENJPA-1066 at 2/21/11 2:47 PM:
-------------------------------------------------------------
I was making a test case for another problem (which may or may not be related)
and ran into this with an in-memory hsqldb and generated schema.
Even if I use em.persist and even if I use a non-primitive id (I used Long),
the entity with id 0 is overwritten.
For most use cases OpenJPA doesn't force me to manually write SQL or manually
create tables. Yet for this simple use case I have to learn hsqldb's way of
starting with 1 (which I only use for small tests, we normally use mssql
server).
Don't know if this helps, but I found a similar bug on EclipseLink
(https://bugs.eclipse.org/bugs/show_bug.cgi?id=297198) they solved it by using
something like "GENERATED BY DEFAULT AS IDENTITY (START WITH 1...".
was (Author: slowstrider):
I was making a test case for another problem (which may or may not be
related) and ran into this with an in-memory hsqldb and generated schema.
Even if I use em.persist and even if I use a non-primitive id (I used Long),
the entity with id 0 is overwritten.
For most use cases OpenJPA doesn't force me to manually write SQL or manually
create tables. Yet for this simple use case I have to learn hsqldb's way of
starting with 1 (which I only use for small tests, we normally use mssql
server).
> Generated ID starting with 0 can cause unexpected results
> ---------------------------------------------------------
>
> Key: OPENJPA-1066
> URL: https://issues.apache.org/jira/browse/OPENJPA-1066
> Project: OpenJPA
> Issue Type: Improvement
> Components: kernel
> Affects Versions: 2.2.0
> Environment: any DB that allows a generated id to start with 0. And
> an entity that maps that generated id to an int instead of an Integer
> Reporter: B.J. Reed
> Priority: Minor
> Attachments: GeneratedIDStartsWith0.ZIP
>
>
> Several DB's allow a generated id column to start with 0.
> For instance, DB2 allows "GENERATED ALWAYS AS IDENTITY (START WITH 0)...."
> When this is used, the very first object will have an id of 0. When entities
> are first created, the user usually won't fill in the corresponding id field
> (since it will be generated by the DB when the entity is put in the DB), so
> it defaults to 0. The entity manager then uses this 0 and sees that an
> entity already exists and will update the old entity in stead of creating a
> new one.
> This is not a large issue, because a user could simply specify "START WITH 1"
> as a very simple workaround or they could use an Integer instead of an int,
> but it would be nice to fix so that new users don't hit this problem.
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira