Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] Fwd: null value ONCASCADE=PERSIST and XA Resources

Hello John,

I didn't notice that you are not setting the Item's invoice. Generally, a 1:M when using a foreign key requires that the target have a M:1 back, and it is this M:1 back that defines and controls the foreign key value. Since the INVOICE_ID is being set to null, you probably have this mapped correctly and instead are just leaving the relationship as null. To get it set, when you add an item to invoice's list of Items, you also need to set the back pointer. JPA does not maintain bidirectional relationships for you.

Best Regards,
Chris

christopher delahunt wrote:
1) How have you set the invoice's primary key, and how are the ProductItem <--> Invoice mappings defined?

2) I can't say too much, it looks like a container setup issue. The exception is stating you cant use two different transactional resources inside a single transaction; Two JTA datasources cannot be involved in 1 transaction without XA, which is what you seem to be attempting to do with your current configuration and use of two persistence contexts. If you don't want to use XA, make one of the persistence context not use a JTA datasource and manage the transactions through the application directly. Ie make one resource local and let the other take part in the JTA transaction. Of course, this will require transaction management on the resource local persistence context, so you may just want to use XA instead.

Best Regards,
Chris

John Arevalo wrote:
Hi list, I'm facing 2 problems with JPA

1) I have an OneToMany relationship between Invoice and ProductItem,
when i try to create a new invoice:

Invoice invoice = new Invoice();
ArrayList<ProductItem> items = new ArrayList<ProductItem>();
for(/*any iteration*/) {
     item = new ProductItem();
     item.setQuantity(myQuantity);
     items.add(item);
}

invoice.setProductItems(items);
invoiceFacade.create(invoice);

throws an SQLException because native query is: INSERT INTO
PRODUCT_ITEM(QUANTITY, INVOICE_ID) VALUES(3, null);

should i persist invoice before add items to it? in that piece of code
i can manage transaction in create(Invoice) method...persisting
invoice object first, I have to manage Transaction outside of EJB
method, or create another one.

2) another Exception is thrown in several "INSERT" actions. I have
Oracle PersistenceContext and DB2 PersistenceContext in EJB module,
message is:

Local transaction already has 1non-XA Resource: cannot add more resources.

reading this post [1], looks like i need XADatasource when i use
different pool resources. Really i don't have to persist objects from
DB2, so i don't need distribuited transactions, can i disable XA?


[1]http://www.theserverside.com/discussions/thread.tss?thread_id=21385#95346

Thanks for your replies,


Best regards.
--
John Arévalo
GNU/Linux User #443701
http://counter.li.org/
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users


Back to the top