Hi Rick,
when I use
<property name="openjpa.MetaDataFactory" value="
"org.apache.openjpa.persistence.jdbc.PersistenceMappingFactory(types=com.retail_sc.test.entity.Group;com.retail_sc.test.entity.Person;)"
/>
The same error ("no registered metadata") occurs.
After some investigation (looking at JDBCPersistenceProductDerivation) I
found out that following configuration:
<property name="openjpa.MetaDataFactory" value=
"org.apache.openjpa.persistence.PersistenceMetaDataFactory"/>
<property name="openjpa.jdbc.MappingFactory" value=
"org.apache.openjpa.persistence.jdbc.PersistenceMappingFactory"/>
<property name="openjpa.jdbc.MappingDefaults" value=
"org.apache.openjpa.persistence.jdbc.PersistenceMappingDefaults"/>
Leads to following Exception:
org.apache.openjpa.persistence.ArgumentException: You cannot join
on column "MPTZZY.NA_GRP". It is not managed by a mapping that supports
joins.
which looks a little better to me?
Actually I think the main problem is, that PersistenceProductDerivation
and JDBCPersistenceProductDerivation both are setting the "JPA" Alias.
But one sets MetaDataFactory for Alias JPA whith
PersistenceMetaDataFactory and one sets MetaDataFactory for Alias JPA with
PersistenceMappingFactory. During execution both,
PersistenceProductDerivation and JDBCPersistenceProductDerivation are
invoked which results in MetaDataFactory being set to the one or the other
value, depending on which Derivation was called lately. This is nothing
one could easily configure in the persistence.xml.
Instead I would have to implement an own Derivation? I am a little
confused.
Best regards Marcel
From: Rick Curtis <[email protected]>
To: [email protected]
Date: 10.08.2011 18:31
Subject: Re: Problems when using "openjpa.MetaDataFactory" Property
Try specifying your types also --> <property
name="openjpa.MetaDataFactory"
value="org.apache.openjpa.persistence.jdbc.PersistenceMappingFactory(types=com.retail_sc.test.entity.Group;com.retail_sc.test.entity.Group2;...etc/>
This happens at runtime, but I can't find where it happens atm.
On Wed, Aug 10, 2011 at 11:12 AM, Marcel Urbanek
<[email protected]>wrote:
> Then following Stacktrace is displayed:
>
> Caused by: <openjpa-1.2.1-r752877:753278 fatal user error>
> org.apache.openjpa.persistence.ArgumentException: Errors encountered
while
> resolving metadata. See nested exceptions for details.
> at
>
>
org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:563)
> at
>
>
org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:308)
> ...
> Caused by: java.lang.IllegalStateException: No registered metadata for
> type "class com.retail_sc.test.entity.Group".
> at
> org.apache.openjpa.enhance.PCRegistry.getMeta(PCRegistry.java:255)
> at
> org.apache.openjpa.enhance.PCRegistry.newInstance(PCRegistry.java:111)
> ...
>
> Best regards Marcel
>
>
>
> From: Rick Curtis <[email protected]>
> To: [email protected]
> Date: 10.08.2011 18:04
> Subject: Re: Problems when using "openjpa.MetaDataFactory"
Property
>
>
>
> See if setting this property works for you. --> <property
> name="openjpa.MetaDataFactory"
> value="org.apache.openjpa.persistence.jdbc.PersistenceMappingFactory/>
>
> Thanks,
> Rick
>
>
> On Wed, Aug 10, 2011 at 10:48 AM, Marcel Urbanek
> <[email protected]>wrote:
>
> > Sure.
> >
> > My Entity looks like the following:
> >
> > @Entity
> > @Table(name="MPTZZY")
> > public class Group extends UpdateEntity{
> >
> > /*Remark text*/
> > @Column(name = "TE_RMK",
> > length=20)
> > private String remarkText;
> > [...]
> >
> >
> > The according Junit Test is the following (EJB-Services are
implemented
> > straight forward):
> >
> > GroupServiceLocal tempGroupService = (GroupServiceLocal)
> > initialContext.lookup(GroupServiceLocal.class.getCanonicalName());
> > PersonServiceLocal tempPersonService = (PersonServiceLocal)
> > initialContext.lookup(PersonServiceLocal.class.getCanonicalName());
> > GroupPK tempPK=new GroupPK();
> >
> > Person tempPerson=new Person();
> > tempPerson.getId().setPersonName("Marcel");
> > tempPerson.setAgeNumber((short) 29);
> > tempPerson.setRemarkText("TEST");
> >
> > Group tempGroup=new Group();
> > tempGroup.getId().setGroupName("AA Team");
> > tempGroup.getId().setGroupNumber((short)1);
> > tempGroup.getId().setValidFromDate(new Date());
> > tempGroup.setRemarkText("AA Team");
> > tempGroup.getPersons().add(tempPerson);
> > tempPerson.setGroup(tempGroup);
> > tempGroupService.createGroup(tempGroup);
> >
> > When running the test with the following property in the
> persistence.xml:
> >
> > <property name="openjpa.MetaDataFactory" value="jpa"/>
> >
> > everything works fine.
> >
> > But when I change the property into:
> >
> > <property name="openjpa.MetaDataFactory" value=
> > "org.apache.openjpa.persistence.PersistenceMetaDataFactory"/>
> >
> > (which should be essentially the same, according to the document
> mentioned
> > in the mail before) the test fails with following error message:
> >
> > <openjpa-1.2.1-r752877:753278 nonfatal general error>
> > org.apache.openjpa.persistence.PersistenceException:
> > DB2 SQL error: SQLCODE: -204, SQLSTATE: 42704, SQLERRMC:
> > I01W90.GROUPSQLCA OUTPUT[Errp=DSNXERT2, Errd=-335, 0, 0, -1, 0, 0]
> > DB2 SQL error: SQLCODE: -516, SQLSTATE: 26501, SQLERRMC: null
> > DB2 SQL error: SQLCODE: -518, SQLSTATE: 07003, SQLERRMC: null
> > FailedObject: prepstmnt 18898317 INSERT INTO i01w90.Group
> > (groupName, groupNumber, validFromDate, remarkText, date, time, user)
> > VALUES (?, ?, ?, ?, ?, ?, ?)
> >
>
[org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement]
> >
> > Obviously OpenJPA now does not use the column names I specified (for
> > example "TE_RMK") but instead uses the Java attribute name
> ("remarkText").
> >
> > Best regards Marcel
> >
> >
> >
> >
> > From: Rick Curtis <[email protected]>
> > To: [email protected]
> > Date: 10.08.2011 16:12
> > Subject: Re: Problems when using "openjpa.MetaDataFactory"
> Property
> >
> >
> >
> > Can you post a unit test to help us better understand where you're
> running
> > into problems?
> >
> > Thanks,
> > Rick
> >
> > On Wed, Aug 10, 2011 at 4:49 AM, Marcel Urbanek
> > <[email protected]>wrote:
> >
> > > Hi,
> > >
> > > I want to overwrite the MetaDataFactory like described here:
> > >
> > >
> >
> >
>
>
http://openjpa.apache.org/builds/1.0.2/apache-openjpa-1.0.2/docs/manual/ref_guide_meta.html
>
> >
> > >
> > > But it turned out it doesn't work. I managed to develop a test
> scenario
> > > which easily produces the behaviour I encountered.
> > >
> > > What _does_ work is the following:
> > >
> > > Adding
> > > <property name="openjpa.MetaDataFactory" value="jpa"/>
> > > to persistence.xml.
> > >
> > > When setting this property my junit test (persisting a simple
> > association,
> > > using @Column Annotation to use differing column names) does work.
> > >
> > >
> > > According to the document above, this property Tag should be
> equivalent
> > to
> > > the setting above:
> > >
> > > <property name="openjpa.MetaDataFactory"
> > > value="org.apache.openjpa.persistence.PersistenceMetaDataFactory"/>
> > >
> > > But when using this configuration my junit test fails. The differing
> > > Column Names set by the @Column.name Attribute are no longer found.
> > > Instead the Java Attribute-Names are used in the SQL.
> > >
> > > My problem is, that I want to implement a custom MetaDataFactory and
> > this
> > > doesn't work either (which is expected, because I extend
> > > PersistenceMetaDataFactory). Is there something I missed?
> > >
> > > (I'm using openjpa 2.11 with openejb 4.0.0 snapshot)
> > >
> > > Best regards Marcel
> > > --
> > > RSC Commercial Services GmbH & Co. OHG, Wanheimer Strasse 70,
D-40468
> > > Duesseldorf - Sitz: Duesseldorf - Registergericht: Duesseldorf HRA
> 12655
> > > Persoenlich haftende Gesellschafter:
> > > C&A Retail GmbH - Sitz: Zug/Schweiz - Handelsregister Kanton Zug:
> > > CH-170.4.010.137-5
> > > Geschaeftsfuehrer: Bart F. Brenninkmeijer, Martijn N. N.
> Brenninkmeijer,
> > > Tjeerd E. van der Zee, Robert H. A. M. Smeele, Anthony H. Stam,
> > > FRM PARTICIPATIONS S.A. - Sitz: Luxemburg/Luxemburg - Handels- und
> > > Firmenregister Luxemburg: B 58158
> > > Verwaltungsratsmitglieder: Rafael G. E. Bogaerts, John Drury, Michel
> de
> > > Groote, Johny Seré, Robert H. A. M. Smeele
> > >
> > >
> >
> >
> > --
> > *Rick Curtis*
> >
> >
> > --
> > RSC Commercial Services GmbH & Co. OHG, Wanheimer Strasse 70, D-40468
> > Duesseldorf - Sitz: Duesseldorf - Registergericht: Duesseldorf HRA
12655
> > Persoenlich haftende Gesellschafter:
> > C&A Retail GmbH - Sitz: Zug/Schweiz - Handelsregister Kanton Zug:
> > CH-170.4.010.137-5
> > Geschaeftsfuehrer: Bart F. Brenninkmeijer, Martijn N. N.
Brenninkmeijer,
> > Tjeerd E. van der Zee, Robert H. A. M. Smeele, Anthony H. Stam,
> > FRM PARTICIPATIONS S.A. - Sitz: Luxemburg/Luxemburg - Handels- und
> > Firmenregister Luxemburg: B 58158
> > Verwaltungsratsmitglieder: Rafael G. E. Bogaerts, John Drury, Michel
de
> > Groote, Johny Seré, Robert H. A. M. Smeele
> >
> >
>
>
> --
> *Rick Curtis*
>
>
> --
> RSC Commercial Services GmbH & Co. OHG, Wanheimer Strasse 70, D-40468
> Duesseldorf - Sitz: Duesseldorf - Registergericht: Duesseldorf HRA 12655
> Persoenlich haftende Gesellschafter:
> C&A Retail GmbH - Sitz: Zug/Schweiz - Handelsregister Kanton Zug:
> CH-170.4.010.137-5
> Geschaeftsfuehrer: Bart F. Brenninkmeijer, Martijn N. N. Brenninkmeijer,
> Tjeerd E. van der Zee, Robert H. A. M. Smeele, Anthony H. Stam,
> FRM PARTICIPATIONS S.A. - Sitz: Luxemburg/Luxemburg - Handels- und
> Firmenregister Luxemburg: B 58158
> Verwaltungsratsmitglieder: Rafael G. E. Bogaerts, John Drury, Michel de
> Groote, Johny Seré, Robert H. A. M. Smeele
>
>
--
*Rick Curtis*
--
RSC Commercial Services GmbH & Co. OHG, Wanheimer Strasse 70, D-40468
Duesseldorf - Sitz: Duesseldorf - Registergericht: Duesseldorf HRA 12655
Persoenlich haftende Gesellschafter:
C&A Retail GmbH - Sitz: Zug/Schweiz - Handelsregister Kanton Zug:
CH-170.4.010.137-5
Geschaeftsfuehrer: Bart F. Brenninkmeijer, Martijn N. N. Brenninkmeijer, Tjeerd
E. van der Zee, Robert H. A. M. Smeele, Anthony H. Stam,
FRM PARTICIPATIONS S.A. - Sitz: Luxemburg/Luxemburg - Handels- und
Firmenregister Luxemburg: B 58158
Verwaltungsratsmitglieder: Rafael G. E. Bogaerts, John Drury, Michel de Groote,
Johny Seré, Robert H. A. M. Smeele