Hi,all
I got an exception when trying to persist an entity class which has
embedded classes.
The steps are as following:
1.create the embedded class
@Embeddable
public class Borrower implements Serializable {
private String borrowerName;
...}
2.create the entity class
@Entity
public class Book1 implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
@Embedded
Borrower borrower;
...
}
3.create an instance of the entity class and persis it.
...
Book1 book1=new Book1();
Borrower borrower=new Borrower();
borrower.setBorrowerName("borrowerName");
book1.setName("book1");
book1.setBorrower(borrower);
em.getTransaction().begin();
em.persist(book1);
em.getTransaction().commit();
...
4.set the run time enhancer
-javaagent:D:\repository\org\apache\openjpa\openjpa\2.0.0\openjpa-2.0.0.jar
5.Run this problem and exception occur.
Exception in thread "main" <openjpa-2.0.0-r422266:935683 fatal user
error> org.apache.openjpa.persistence.ArgumentException: The type
"class entities.Borrower" has not been enhanced.
at
org.apache.openjpa.meta.ClassMetaData.resolveMeta(ClassMetaData.java:1812)
at
org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1786)
at
org.apache.openjpa.meta.ValueMetaDataImpl.resolve(ValueMetaDataImpl.java:435)
at
org.apache.openjpa.jdbc.meta.ValueMappingImpl.resolve(ValueMappingImpl.java:494)
at
org.apache.openjpa.meta.FieldMetaData.resolve(FieldMetaData.java:1730)
at
org.apache.openjpa.jdbc.meta.FieldMapping.resolve(FieldMapping.java:458)
at
org.apache.openjpa.meta.ClassMetaData.resolveMeta(ClassMetaData.java:1852)
at
org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1786)
at
org.apache.openjpa.meta.MetaDataRepository.processBuffer(MetaDataRepository.java:790)
at
org.apache.openjpa.meta.MetaDataRepository.resolveMeta(MetaDataRepository.java:693)
at
org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:617)
at
org.apache.openjpa.meta.MetaDataRepository.getMetaDataInternal(MetaDataRepository.java:385)
at
org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:358)
at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2568)
at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2423)
at
org.apache.openjpa.kernel.DelegatingBroker.persist(DelegatingBroker.java:1069)
at
org.apache.openjpa.persistence.EntityManagerImpl.persist(EntityManagerImpl.java:705)
at org.apahce.geronimo.sample.jpa20.test.test.main(test.java:72)
I have met this enhancer problem at first,after setting the runtime
enhancer,the problem is solved.
However,when running the application which has entity class with
embedded class,the enhancer problem came out again.
Actually,I don't know whether this is known issue.Have someone
experienced the same problem with me?
Any suggestion is welcomed,thanks in advance.