Hello,
I've the following setup:
0) EAR file with the following inside
1) 2 EJB jar files (jar1.jar and jar2.jar) with their own persistence.xmls and
entitymanagers (em1 and em2)
2) Entitymanagers are using different datasources (but to the same db)
in jar1.jar i've
| @Entity
| @Table(name = "CalEvent", catalog = "lportal", uniqueConstraints =
{})
| @Inheritance(strategy = InheritanceType.JOINED)
| public class Calevent implements java.io.Serializable {
and in jar2.jar i've
@Entity
| @Name("task")
| @Table(name = "task", catalog = "tc", uniqueConstraints = {})
| @Inheritance(strategy = InheritanceType.JOINED)
| public class Task extends Calevent {
|
also in jar2.jar i've a SFSB which is acting as on action where new Task's are
created:
| Task t = new Task();
| t.setBlaBla();
| em2.persist(t);
|
Now, however, during the insertion it doesn't work. I've figured that it's
because the super classes instance is not persisted/commited to the db and thus i'm
using two different ems / datasources the em2/ jdbc connection2 can't yet see the
super classes stuff in the db.
So, i tried to set up
| <property name="hibernate.transaction.flush_before_completion"
value="true" /> in persistence.xml,
to see if it helps, but the setting is ignored by HEM.
From log i can see that the calevent's insert SQL is before
task's, but em1 (calevent's) is not yet synced to the db so the row doesn't
actually exists in the db yet. And there seems to be foreing key constraint (generated by
Hibernate) between task.eventId and calevent.eventId which is causing the very distracting
duplicate key error message.
anonymous wrote :
| 4093449 15:25:47,379 INFO [STDOUT] Hibernate: insert into lportal.CalEvent (type_,
startDate, description, userName, userId, companyId, groupId, modifiedDate, createDate,
title, firstReminder, secondReminder, remindBy, recurrence, endDate, durationHour,
durationMinute, allDay, timeZoneSensitive, repeating, eventId) values (?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
| 4093450 15:25:47,380 INFO [STDOUT] Hibernate: insert into tc.task(poikkeuksin, tehty,
kohde_organizationId, eventId) values (?, ?, ?, ?)
| 4095969 15:25:49,899 WARN [JDBCExceptionReporter] SQL Error: 1062, SQLState: 23000
| 4095970 15:25:49,900 ERROR [JDBCExceptionReporter] Duplicate entry '18' for
key 1
|
So, is there a way to force flush/commit on the insertion of calEvent?
The reason that i've two EntityManagers and two different datasources (with differens
users and privileges inside the db) is that i want to use ejb3/hibs create/update schema
but also to make sure that em2 doesn't mess with the db schema presented by em1.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3974535#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...