Hi All,
I'm testing upgrading to 1.0.2 of OpenJPA. I have two test classes that
look like this:
@Entity
@Table(name = "Persons")
@Inheritance(strategy= InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="CLASS", discriminatorType =
DiscriminatorType.STRING)
public abstract class Person
{
@Column(name = "OID")
@Id
@GeneratedValue
private long id;
@Column(name = "LastName")
private String lastName;
@Column(name = "FirstName")
private String firstName;
@Column(name = "MiddleName")
private String middleName;
@OneToOne(cascade={CascadeType.PERSIST, CascadeType.REMOVE})
@JoinColumn(name = "AddressOID", referencedColumnName = "OID")
@Dependent
private Address address;
}
@Entity
@DiscriminatorValue("Contact")
public class Contact
extends Person
implements Cloneable
{
@ManyToOne(cascade={CascadeType.PERSIST})
@JoinColumn(name = "CustomerOID")
private Customer customer;
@Column(name = "AcquireDate")
private long acquireDate;
}
In OpenJPA 1.0.1, these two classes enhanced without problems. Now in
1.0.2, when I run the enhancer, I get the following two exceptions:
<openjpa-1.0.2-r420667:627158 fatal user error>
org.apache.openjpa.util.MetaDataException: Errors encountered while
resolving metadata. See nested exceptions for details.
at
org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.ja
va:522)
at
org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepositor
y.java:302)
at
org.apache.openjpa.enhance.PCEnhancer.<init>(PCEnhancer.java:241)
at
org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:4357)
at
org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:4304)
at
com.axway.passport.persistence.util.JpaEnhancer.run(JpaEnhancer.java:47)
at
com.axway.passport.persistence.util.JpaEnhancer.main(JpaEnhancer.java:34
)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
Caused by: <openjpa-1.0.2-r420667:627158 fatal user error>
org.apache.openjpa.util.MetaDataException: Attempt to map
"com.axway.passport.persistence.samples.Person.id" failed: the owning
entity is not mapped.
at
org.apache.openjpa.jdbc.meta.MappingInfo.assertTable(MappingInfo.java:54
4)
at
org.apache.openjpa.jdbc.meta.MappingInfo.createColumns(MappingInfo.java:
496)
at
org.apache.openjpa.jdbc.meta.ValueMappingInfo.getColumns(ValueMappingInf
o.java:143)
at
org.apache.openjpa.jdbc.meta.strats.PrimitiveFieldStrategy.map(Primitive
FieldStrategy.java:83)
at
org.apache.openjpa.jdbc.meta.FieldMapping.setStrategy(FieldMapping.java:
120)
at
org.apache.openjpa.jdbc.meta.RuntimeStrategyInstaller.installStrategy(Ru
ntimeStrategyInstaller.java:80)
at
org.apache.openjpa.jdbc.meta.FieldMapping.resolveMapping(FieldMapping.ja
va:438)
at
org.apache.openjpa.jdbc.meta.FieldMapping.resolve(FieldMapping.java:403)
at
org.apache.openjpa.jdbc.meta.ClassMapping.resolveNonRelationMappings(Cla
ssMapping.java:841)
at
org.apache.openjpa.jdbc.meta.MappingRepository.prepareMapping(MappingRep
ository.java:322)
at
org.apache.openjpa.meta.MetaDataRepository.preMapping(MetaDataRepository
.java:621)
at
org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.ja
va:508)
... 11 more
NestedThrowables:
java.lang.NullPointerException
at
org.apache.openjpa.jdbc.meta.MappingInfo.mergeJoinColumn(MappingInfo.jav
a:1386)
at
org.apache.openjpa.jdbc.meta.MappingInfo.createJoins(MappingInfo.java:11
92)
at
org.apache.openjpa.jdbc.meta.MappingInfo.createForeignKey(MappingInfo.ja
va:954)
at
org.apache.openjpa.jdbc.meta.ValueMappingInfo.getTypeJoin(ValueMappingIn
fo.java:104)
at
org.apache.openjpa.jdbc.meta.strats.RelationToManyTableFieldStrategy.map
(RelationToManyTableFieldStrategy.java:130)
at
org.apache.openjpa.jdbc.meta.strats.RelationCollectionTableFieldStrategy
.map(RelationCollectionTableFieldStrategy.java:94)
at
org.apache.openjpa.jdbc.meta.FieldMapping.setStrategy(FieldMapping.java:
120)
at
org.apache.openjpa.jdbc.meta.RuntimeStrategyInstaller.installStrategy(Ru
ntimeStrategyInstaller.java:80)
at
org.apache.openjpa.jdbc.meta.FieldMapping.resolveMapping(FieldMapping.ja
va:438)
at
org.apache.openjpa.jdbc.meta.FieldMapping.resolve(FieldMapping.java:403)
at
org.apache.openjpa.jdbc.meta.ClassMapping.resolveMapping(ClassMapping.ja
va:812)
at
org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1618)
at
org.apache.openjpa.meta.MetaDataRepository.processBuffer(MetaDataReposit
ory.java:675)
at
org.apache.openjpa.meta.MetaDataRepository.resolveMapping(MetaDataReposi
tory.java:636)
at
org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.ja
va:514)
at
org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepositor
y.java:302)
at
org.apache.openjpa.enhance.PCEnhancer.<init>(PCEnhancer.java:241)
at
org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:4357)
at
org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:4304)
at
com.axway.passport.persistence.util.JpaEnhancer.run(JpaEnhancer.java:47)
at
com.axway.passport.persistence.util.JpaEnhancer.main(JpaEnhancer.java:34
)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
<openjpa-1.0.2-r420667:627158 fatal user error>
org.apache.openjpa.util.MetaDataException: Attempt to map
"com.axway.passport.persistence.samples.Contact.acquireDate" failed: the
owning entity is not mapped.
at
org.apache.openjpa.jdbc.meta.MappingInfo.assertTable(MappingInfo.java:54
4)
at
org.apache.openjpa.jdbc.meta.MappingInfo.createColumns(MappingInfo.java:
496)
at
org.apache.openjpa.jdbc.meta.ValueMappingInfo.getColumns(ValueMappingInf
o.java:143)
at
org.apache.openjpa.jdbc.meta.strats.PrimitiveFieldStrategy.map(Primitive
FieldStrategy.java:83)
at
org.apache.openjpa.jdbc.meta.FieldMapping.setStrategy(FieldMapping.java:
120)
at
org.apache.openjpa.jdbc.meta.RuntimeStrategyInstaller.installStrategy(Ru
ntimeStrategyInstaller.java:80)
at
org.apache.openjpa.jdbc.meta.FieldMapping.resolveMapping(FieldMapping.ja
va:438)
at
org.apache.openjpa.jdbc.meta.FieldMapping.resolve(FieldMapping.java:403)
at
org.apache.openjpa.jdbc.meta.ClassMapping.resolveNonRelationMappings(Cla
ssMapping.java:851)
at
org.apache.openjpa.jdbc.meta.ClassMapping.resolveMapping(ClassMapping.ja
va:808)
at
org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1618)
at
org.apache.openjpa.meta.MetaDataRepository.processBuffer(MetaDataReposit
ory.java:675)
at
org.apache.openjpa.meta.MetaDataRepository.resolveMapping(MetaDataReposi
tory.java:636)
at
org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.ja
va:514)
at
org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepositor
y.java:302)
at
org.apache.openjpa.enhance.PCEnhancer.<init>(PCEnhancer.java:241)
at
org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:4357)
at
org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:4304)
at
com.axway.passport.persistence.util.JpaEnhancer.run(JpaEnhancer.java:47)
at
com.axway.passport.persistence.util.JpaEnhancer.main(JpaEnhancer.java:34
)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
Anyone have any ideas on why this worked in 1.0.1 and not 1.0.2 and what
I can do to resolve this?
Thanks for your help.
Amit