Hi Mike,
thanx a lot for your help. We use:
1) Geronimo 2.1.1 with openjpa-1.0.2.jar
2) OpenEJB Embedded 3.0 with openjpa-1.0.1.jar
The 2 tables are linked with a foreign key:
Table1PAO:
@Id
private long id;
@OneToOne
@JoinColumn(name="foreignkey_table2", referencedColumnName="id")
private Table2PAO table2Pao;
....
Table2PAO:
@Id
private long id;
...
The table Table1 itself has a foreign key constraint. And here the error
'sometimes 50%' arises when code is run on 2). If the code is run in 1),
we have no errrors.There are two insert-Statements, one for Table1 and one
for Table2, and sometimes Table1 is done before Table2, I suppose.
We don't want to change our code, only because of problems in our testing
environment. As far as i understand
@org.apache.openjpa.persistence.jdbc.ForeignKey is not an EJB3-Annotation?
It is specific to openjpa?!
Adding <property name="openjpa.jdbc.SchemaFactory"
value="native"/> to persistence.xml did not help.
-Josef
"Michael Dick" <michael.d.dick@gmail.com>
01.07.2008 23:55
Bitte antworten an
users@openjpa.apache.org
An
users@openjpa.apache.org
Kopie
Thema
Re: Dependency of SQL-Statements
Hi Josef,
Minor clarification WRT update managers. ConstraintUpdateManager is the
default UpdateManager for OpenJPA which probably explains why setting it
was
a no-op for you (sadly this may vary if you were using a rather old
version
of OpenJPA).
Which version of OpenJPA are you using? Does the application work
differently in Geronimo than it does in your test environment?
How do the SQL statements depend on each other? The constraint update
manager is able to detect when you have two related entities which use
generated PK fields. If you have other implied FK relationships between
two
entities you may need to indicate where the key constraints exist by
adding
@ForeignKey annotations in your entities.
For example
@Entity
public class Order {
// OpenJPA does not assume that there is a FK constraint on
shippingAddress.
@OneToOne private Address shippingAddress;
}
@Entity
public class Order {
// OpenJPA is aware of a Database FK constraint.
@org.apache.openjpa.persistence.jdbc.ForeignKey
@OneToOne private Address shippingAddress;
}
Alternatively you can configure OpenJPA to read in constraints from the
database by adding the following property to persistence.xml :
<property name="openjpa.jdbc.SchemaFactory" value="native"/>.
See
http://openjpa.apache.org/docs/latest/manual/manual.html#ref_guide_schema_info_factoryfor
more information on the SchemaFactory setting.
Hope this helps,
-mike
On Tue, Jul 1, 2008 at 3:08 AM, <Josef.Eisele@bgs-ag.de> wrote:
> Hi all,
>
> we are using openjpa in two ways:
> 1) In our Geronimo Applicationserver 2.1.1
> 2) In our Test-Environment with openejb embedded 3.0
>
> We have a problem in 2), which I described in a posting on the
> openejb-Mailinglist:
>
> On Jun 30, 2008, at 7:32 AM, Josef.Eisele@bgs-ag.de wrote:
>
> > Hi David,
> >
> > Germany lost the Euro2008 therefore I need good news ;-) Do you have
> > any
> > for me?
> >
> > I confinced my team to use all junit-Tests with openejb as embedded
> > container in Eclipse :-)
> >
> > Using my tests, sometimes strange things happen:
> > * I test the public CRUD-functions of my business class and often I
> > get
> > the expected GREEN color as the result.
> > * But sometimes the first function of my business class fails. It is a
> > creation of the business object. The failure happens without any
> > code-change.
> >
> > There are two SQL-Insert-Statemens which depend on each other. We
> > use the
> > EntityManager.persist Method. Is it possible the transaction manager
> > in
> > embedded-openejb sometimes use the wrong order for the insert-
> > statements ?
>
> FWIU, yes. By default, OpenJPA does not reorder SQL statements to
> respect foreign keys. There is an UpdateManager which will respect
> foreign keys, but you have to turn it on with this property:
>
> openjpa
> .jdbc
> .UpdateManager=org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager
>
>
> BTW, this is about the limits of my knowledge of OpenJPA, so you may
> be better served by asking on the OpenJPA Users mailing list
> (users@openjpa.apache.org
> ).
>
> -dain
>
>
> => I tried the property, but nothing changed.
>
>
> -Josef
> BGS Beratungsgesellschaft
> Software Systemplanung AG Niederlassung Rhein/Main
> Robert-Koch-Straße 41
> 55129 Mainz
> Fon: +49 (0) 6131 / 914-0
> Fax: +49 (0) 6131 / 914-400
> www.bgs-ag.de Geschäftssitz Mainz
> Registergericht
> Amtsgericht Mainz
> HRB 62 50
> Aufsichtsratsvorsitzender
> Dr. Wolfgang Trommer
> Vorstand
> Hanspeter Gau
> Hermann Kiefer
> Nils Manegold
> Heinz-Jörg Zimmermann
>
>
BGS Beratungsgesellschaft
Software Systemplanung AG
Niederlassung Rhein/Main
Robert-Koch-Straße 41
55129 Mainz
Fon: +49 (0) 6131 / 914-0
Fax: +49 (0) 6131 / 914-400
www.bgs-ag.de
Geschäftssitz Mainz
Registergericht
Amtsgericht Mainz
HRB 62 50
Aufsichtsratsvorsitzender
Dr. Wolfgang Trommer
Vorstand
Hanspeter Gau
Hermann Kiefer
Nils Manegold
|