I have seen this problem before, but somehow it went away. I am using your
entity definition but could no longer reproduce the problem. Using java
decompiler, the following is my pcCopyKeyFieldsToObjectId in EmailAddress. Can
you post your problematic pcCopyKeyFieldsToObjectId?
public void pcCopyKeyFieldsToObjectId(Object paramObject)
{
Object localObject;
EmailAddressId localEmailAddressId =
(EmailAddressId)((ObjectId)paramObject).getId();
Account localAccount = this.account;
if (localAccount != null)
localObject = ((PersistenceCapable)localAccount).pcNewObjectIdInstance();
localEmailAddressId.account = ((localObject != null) ?
((BigIntegerId)localObject).getId() : null);
localEmailAddressId.ix = this.ix;
}
-Fay
----- Original Message ----
From: Bender1199 <[email protected]>
To: [email protected]
Sent: Sun, January 17, 2010 1:38:37 PM
Subject: VerifyError when using IdClass with BigInteger/BigDecimal
I'm using openjpa-all 2.0.0-M3.
I've following classes
@Entity
public class Account {
@Id
private BigInteger id;
private String name;
private String password;
...
}
@Entity
@IdClass(EmailAddress.EmailAddressId.class)
public class EmailAddress{
@Id @ManyToOne
private account;
@Id
private BigInteger ix;
private String address;
public static class EmailAddressId{
public BigInteger account;
public BigInteger ix;
...
}
}
Now when I'm creating an EntityManager this error occures
java.lang.VerifyError: (class: EmailAddress, method:
pcCopyKeyFieldsToObjectId signature: (Ljava/lang/Object;)V) Bad type in
putfield/putstatic
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at
org.apache.openjpa.meta.MetaDataRepository.classForName(MetaDataRepository.java:1448)
at
org.apache.openjpa.meta.MetaDataRepository.loadPersistentTypes(MetaDataRepository.java:1421)
at
org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentTypes(AbstractBrokerFactory.java:273)
at
org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:229)
at
org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:203)
at
org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:152)
at
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:199)
at
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:150)
at
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:56)
Same behaviour when using BigDecimal as ID field. When using Long it works!
Anyone an idea?
--
View this message in context:
http://n2.nabble.com/VerifyError-when-using-IdClass-with-BigInteger-BigDecimal-tp4410186p4410186.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.