Re: Bug when persisting two related objects

2007-05-11 Thread Kevin Sutter

I don't think it matters whether you are using DB2 or any other database.
Getting back to one of Patrick's earlier requests...  Can you post more
information on the Project and Base classes?  You've posted a snippet of the
Base class and it's ID, but how are you defining the Project and it's ID?
As Abe as pointed out, if two classes in an inheritance hierarchy use the
same ID class, then unique id values need to be provided for each instance.
Could you also post your DDL for generating your tables?  Was this
hand-generated DDL or created by the OpenJPA tooling?  Thanks.

Kevin

On 5/10/07, Majeed Arni [EMAIL PROTECTED] wrote:



I am using DB2 to generate the Identity as in the DDL:
ID BIGINT NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1,
INCREMENT
BY 1)

And in code for the base class:
@MappedSuperclass
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Base {
.
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = ID)
private long someID;

.}

Will this not use a unique ID generator per derived class? Is there a
better
way of doing it in DB2? Thanks for the help.

Majeed Arni



Abe White wrote:

 Are the two types related by inheritance?  If two classes in an
 inheritance hierarchy use the same id class, then every instance of
 both classes must have a distinct id value.  If you want instances in
 inheritance-related classes to be able to have the same id values,
 then you must use different id classes for different classes in the
 inheritance hierarchy.

 Notice:  This email message, together with any attachments, may contain
 information  of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated
 entities,  that may be confidential,  proprietary,  copyrighted  and/or
 legally privileged, and is intended solely for the use of the individual
 or entity named in this message. If you are not the intended recipient,
 and have received this message in error, please immediately return this
by
 email and then delete it.



--
View this message in context:
http://www.nabble.com/Bug-when-persisting-two-related-objects-tf3719319.html#a10416417
Sent from the open-jpa-dev mailing list archive at Nabble.com.




Re: Bug when persisting two related objects

2007-05-11 Thread Majeed Arni

The DDL is handmade. There is nothing in code about Identity. It is done in
Database. 

I found a workaround for this problem by just moving the code around. Looks
like a bug is the wrong message it sends.

Also, is there a way to generate DDL from Java code? I saw create=true for
Derby, does that work for DB2 also? Thanks again.

Majeed



Kevin Sutter wrote:
 
 I don't think it matters whether you are using DB2 or any other database.
 Getting back to one of Patrick's earlier requests...  Can you post more
 information on the Project and Base classes?  You've posted a snippet of
 the
 Base class and it's ID, but how are you defining the Project and it's ID?
 As Abe as pointed out, if two classes in an inheritance hierarchy use the
 same ID class, then unique id values need to be provided for each
 instance.
 Could you also post your DDL for generating your tables?  Was this
 hand-generated DDL or created by the OpenJPA tooling?  Thanks.
 
 Kevin
 
 On 5/10/07, Majeed Arni [EMAIL PROTECTED] wrote:


 I am using DB2 to generate the Identity as in the DDL:
 ID BIGINT NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1,
 INCREMENT
 BY 1)

 And in code for the base class:
 @MappedSuperclass
 @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
 public abstract class Base {
 .
 @Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 @Column(name = ID)
 private long someID;

 .}

 Will this not use a unique ID generator per derived class? Is there a
 better
 way of doing it in DB2? Thanks for the help.

 Majeed Arni



 Abe White wrote:
 
  Are the two types related by inheritance?  If two classes in an
  inheritance hierarchy use the same id class, then every instance of
  both classes must have a distinct id value.  If you want instances in
  inheritance-related classes to be able to have the same id values,
  then you must use different id classes for different classes in the
  inheritance hierarchy.
 
  Notice:  This email message, together with any attachments, may contain
  information  of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated
  entities,  that may be confidential,  proprietary,  copyrighted  and/or
  legally privileged, and is intended solely for the use of the
 individual
  or entity named in this message. If you are not the intended recipient,
  and have received this message in error, please immediately return this
 by
  email and then delete it.
 
 

 --
 View this message in context:
 http://www.nabble.com/Bug-when-persisting-two-related-objects-tf3719319.html#a10416417
 Sent from the open-jpa-dev mailing list archive at Nabble.com.


 
 

-- 
View this message in context: 
http://www.nabble.com/Bug-when-persisting-two-related-objects-tf3719319.html#a10432604
Sent from the open-jpa-dev mailing list archive at Nabble.com.



Re: Bug when persisting two related objects

2007-05-10 Thread Majeed Arni


Have a base class, say B and have 2 classes derived from it X and Y. 

B is
@MappedSuperclass
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)

X has oneY (1 to 1) unidirection

@OneToOne(fetch = FetchType.EAGER, cascade = { CascadeType.ALL})
@JoinColumn(name = Y_ID, nullable=false)
  
Y does not know of X.


Caused by: 0.9.7-incubating fatal store error
org.apache.openjpa.persistence.RollbackException: Attempt to assign id
com.testc.reporting.core.pbo.Base-201 to new instance
com.testc.reporting.core.pbo.Project-com.testc.reporting.core.pbo.Base-201
failed; there is already an object in the L1 cache with this id. You must
delete this object (in a previous transaction or the current one) before
reusing its id.  This error can also occur when a horizontally or vertically
mapped classes uses auto-increment application identity and does not use a
hierarchy of application identity classes.
at
org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:420)
at
com.testc.reporting.core.TestProject.testCreateProject(TestProject.java:54)
at com.testc.reporting.core.TestProject.testProject(TestProject.java:24)
at com.testc.reporting.core.Main.main(Main.java:19)
... 27 more
Caused by: 0.9.7-incubating fatal user error
org.apache.openjpa.persistence.ArgumentException: Attempt to assign id
com.testc.reporting.core.pbo.Base-201 to new instance
com.testc.reporting.core.pbo.Project-com.testc.reporting.core.pbo.Base-201
failed; there is already an object in the L1 cache with this id. You must
delete this object (in a previous transaction or the current one) before
reusing its id.  This error can also occur when a horizontally or vertically
mapped classes uses auto-increment application identity and does not use a
hierarchy of application identity classes.
FailedObject:
com.testc.reporting.core.pbo.Project-com.testc.reporting.core.pbo.Base-201
at
org.apache.openjpa.kernel.BrokerImpl$ManagedCache.commitNew(BrokerImpl.java:4528)
at
org.apache.openjpa.kernel.BrokerImpl.setStateManager(BrokerImpl.java:3787)
at
org.apache.openjpa.kernel.StateManagerImpl.commit(StateManagerImpl.java:925)
at
org.apache.openjpa.kernel.BrokerImpl.endTransaction(BrokerImpl.java:2194)
at
org.apache.openjpa.kernel.BrokerImpl.afterCompletion(BrokerImpl.java:1801)
at
org.apache.openjpa.kernel.LocalManagedRuntime.commit(LocalManagedRuntime.java:93)
at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1311)
at
org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java:866)
at
org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:409)
... 30 more


Patrick Linskey-2 wrote:
 
 Hi,
 
 Can you describe the relationship between Project and Base (and any
 other relevant persistent classes and superclasses)? If possible, it'd
 be great to see some relevant code snippets.
 
 Thanks,
 
 -Patrick
 
 On 5/9/07, Majeed Arni [EMAIL PROTECTED] wrote:
 I have 2 objects related, when I create both in a transaction and set
 one
 object on another and then committing. I get this error. The objects are
 stored in DB2 with auto increment -ing identity.

 This error can also occur when a horizontally or vertically mapped
 classes uses auto-increment application identity and does not use a
 hierarchy of application identity classes.

 Caused by: 0.9.7-incubating fatal user error
 org.apache.openjpa.persistence.ArgumentException: Attempt to assign id
 com.XXX.core.pbo.Base-141 to new instance
 com..core.pbo.Project-com..core.pbo.Base-141 failed; there is
 already an object in the L1 cache with this id. You must delete this
 object (in a previous transaction or the current one) before reusing its
 id.  This error can also occur when a horizontally or vertically mapped
 classes uses auto-increment application identity and does not use a
 hierarchy of application identity classes.
 FailedObject: com.X.core.pbo.Project-com..core.pbo.Base-141
 at org.apache.openjpa.kernel.BrokerImpl$ManagedCache.commitNew(
 BrokerImpl.java:4528)
 at org.apache.openjpa.kernel.BrokerImpl.setStateManager(
 BrokerImpl.java:3787)
 at org.apache.openjpa.kernel.StateManagerImpl.commit(
 StateManagerImpl.java:925)
 at org.apache.openjpa.kernel.BrokerImpl.endTransaction(
 BrokerImpl.java:2194)
 at org.apache.openjpa.kernel.BrokerImpl.afterCompletion(
 BrokerImpl.java:1801)
 at org.apache.openjpa.kernel.LocalManagedRuntime.commit(
 LocalManagedRuntime.java:93)
 at org.apache.openjpa.kernel.BrokerImpl.commit(
 BrokerImpl.java:1311)
 at org.apache.openjpa.kernel.DelegatingBroker.commit(
 DelegatingBroker.java:866)
 at org.apache.openjpa.persistence.EntityManagerImpl.commit(
 EntityManagerImpl.java:409)

 Regards,

 Majeed Arni

 
 
 -- 
 Patrick Linskey
 202 669 5907
 
 

-- 
View this message in context: 

Re: Bug when persisting two related objects

2007-05-10 Thread Abe White
Are the two types related by inheritance?  If two classes in an  
inheritance hierarchy use the same id class, then every instance of  
both classes must have a distinct id value.  If you want instances in  
inheritance-related classes to be able to have the same id values,  
then you must use different id classes for different classes in the  
inheritance hierarchy.

Notice:  This email message, together with any attachments, may contain 
information  of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated 
entities,  that may be confidential,  proprietary,  copyrighted  and/or legally 
privileged, and is intended solely for the use of the individual or entity 
named in this message. If you are not the intended recipient, and have received 
this message in error, please immediately return this by email and then delete 
it.


Re: Bug when persisting two related objects

2007-05-10 Thread Majeed Arni

I am using DB2 to generate the Identity as in the DDL:
ID BIGINT NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT
BY 1)

And in code for the base class:
@MappedSuperclass
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Base {
.
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = ID)
private long someID;

.}

Will this not use a unique ID generator per derived class? Is there a better
way of doing it in DB2? Thanks for the help.

Majeed Arni



Abe White wrote:
 
 Are the two types related by inheritance?  If two classes in an  
 inheritance hierarchy use the same id class, then every instance of  
 both classes must have a distinct id value.  If you want instances in  
 inheritance-related classes to be able to have the same id values,  
 then you must use different id classes for different classes in the  
 inheritance hierarchy.
 
 Notice:  This email message, together with any attachments, may contain
 information  of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated
 entities,  that may be confidential,  proprietary,  copyrighted  and/or
 legally privileged, and is intended solely for the use of the individual
 or entity named in this message. If you are not the intended recipient,
 and have received this message in error, please immediately return this by
 email and then delete it.
 
 

-- 
View this message in context: 
http://www.nabble.com/Bug-when-persisting-two-related-objects-tf3719319.html#a10416417
Sent from the open-jpa-dev mailing list archive at Nabble.com.