openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From hmmahboobi <hmmahbo...@gmail.com>
Subject Re: persistence problem in distributed environment
Date Mon, 13 Apr 2009 15:08:40 GMT


Hi

Thanks for your response,

This model is a small view of our large system,
Actual codes are very large and complex, so I cant send entire model for you.
Is there any considrations that help me to solve this problem?


Hi,

I am unable to replicate the issue. The sample code you mentioned in problem description is
working as expected on weblogic application server with oracle database (10.1.0.2) and oracle
XA driver ("Oracle JDBC Driver version - 10.1.0.2.0").

Here is the configuration I used: 

persistence.xml 
oracleXADataSource.xml 
Source code 

SQL> select * from voucher;

        ID ACCOUNT_ID
---------- ----------
       123        215
       120        215
       130        215

If you think my test case is not in sync with your explanation then please upload a replicable
test case.

Regards,
Ravi.



We have a critical problem in our application, we have multiple enterprise applications and
we have to use distributed transactions to ensure ACID operations on entire system.
Our Application server is Glassfish V9 update 5 on SUSE 10 and database is Oracle 10.2.0.1.0.
The problem is when we use oracle.jdbc.xa.client.OracleXADataSource as JDBC driver and javax.sql.XADataSource
as resource type, we get following error in persisting an entity with a ManyToOne relationship
and it complains the other side of relationship is unmanaged!!! However the other side of
the relationship (here account entity) is already existed in database and with typical JDBC
driver, no error we encounter. I have tested all other OpenJPA versions but the problem still
exists. I don’t know whether this is OpenJPA issue or JDBC driver, please share your experience
on this matter.


javax.ejb.TransactionRolledbackLocalException: Exception thrown from bean; nested exception
is: <openjpa-2.0.0-M1-SNAPSHOT-r422266:725770 fatal user error> org.apache.openjpa.persistence.InvalidStateException:
Encountered unmanaged object in persistent field "com.kishware.core.gl.data.Voucher.account"
during flush.  However, this field does not allow cascade persist. Set the cascade attribute
for this field to CascadeType.PERSIST or CascadeType.ALL (JPA annotations) or "persist" or
"all" (JPA orm.xml), or enable cascade-persist globally, or manually persist the related field
value prior to flushing. You cannot flush unmanaged objects or graphs that have persistent
associations to unmanaged objects.
FailedObject: com.kishware.core.gl.data.Account-com.kishware.core.gl.data.Account-215


This is our entity classes and simple test case:

public class Voucher {
@Id
      @Column(name = "id")
      @GeneratedValue(strategy = GenerationType.SEQUENCE ,generator = "VoucherSequenceGenerator")
private Long id;
      
@ManyToOne
@JoinColumn(name = "account_id")
      private Account account;
}

public class Account {
@Id
      @Column(name = "id")
      @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "AccountSequenceGenerator")
      private Long id;
}

Account account = entityManager.find(Account.class, 215L);
Voucher voucher = new Voucher();
Voucher.setAccount(account);
entityManager.persist(voucher);






-- 
View this message in context: http://n2.nabble.com/persistence-problem-in-distributed-environment-tp2619875p2628161.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.


Mime
View raw message