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 <sefr...@googlemail.com>
To: users@openjpa.apache.org
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.



      

Reply via email to