Hi Stephan,

This type of exception is generally the result of the class being loaded by
two different classloaders. I've seen it happen in the past when OpenJPA is
included inside an Enterprise Application.

The first time the application is loaded the class is loaded by the
application's classloader. When the app is stopped that classloader is
disposed of. The second time the class is used it's loaded by a new
application classloader, causing the conflict.

Does this happen for you only after restarting the application, or are we
looking at a different scenario?

-mike

On Mon, Sep 29, 2008 at 12:46 PM, <[EMAIL PROTECTED]> wrote:

> Hi,
>
> does anybody knows, what the reason for this is:
> Caused by: java.lang.ClassCastException: org.apache.openjpa.util.Id
> incompatible with org.apache.openjpa.util.IntId
>        at
>
> com.mycompany.myproduct.ejb.entities.EntitySuperclass.pcCopyKeyFieldsFromObjectId(EntitySuperclass.java)
>        at
>
> com.mycompany.myproduct.ejb.entities.EntityClass.pcNewInstance(EntityClass.java)
>        at
> org.apache.openjpa.enhance.PCRegistry.newInstance(PCRegistry.java:121)
>        at
>
> org.apache.openjpa.kernel.StateManagerImpl.initialize(StateManagerImpl.java:253)
>        at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:330)
>        at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:255)
>        at
>
> org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
>        at
>
> org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
>        at
> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:844)
>        at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:802)
>        ... 99 more
> (full exception dump below)
>
> The requested JP query (see also stacktrace below) is "select o from User
> o where o.userName = ?1 and o.password = ?2". You find the entity class
> User below.
>
> I'm using WebSphere 6.1.0.19 with OpenJPA as EJB3 provider.
>
> best regards and thanks in advance
>   Stepahn Koops
>
> -------------------------------< entity class user
> >----------------------------------------
> package com.mycompany.myproduct.ejb.entities;
>
> import ...
>
> @Entity
> @Table(schema = "myproduct", name = "benutzer", uniqueConstraints =
> [EMAIL PROTECTED](columnNames = {"benutzername"})})
> public class User implements Persistent {
>
>        private static final long serialVersionUID =
> -6505202942252735251L;
>
>        @Id
>        @GeneratedValue
>        private Long id;
>
>        @OneToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE },
> fetch = FetchType.EAGER)
>        @JoinColumn(nullable = false)
>        private Mitarbeiter mitarbeiter;
>
>        @Column(name = "benutzername", nullable = false)
>        private String userName;
>
>        @Column(name = "passwort", nullable = false)
>        private String password;
>
>        @ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE },
> fetch = FetchType.EAGER)
>        private Set<Role> roles = new HashSet<Role>();
>
>        public User() {}
>
>        /**
>         * @param mitarbeiter
>         * @param userName
>         * @param password
>         */
>        public User(Mitarbeiter mitarbeiter, String userName, String
> password) {
>                super();
>                this.mitarbeiter = mitarbeiter;
>                this.userName = userName;
>                this.password = password;
>        }
>
>        /**
>         * @param mitarbeiter
>         * @param userName
>         * @param password
>         * @param roles
>         */
>        public User(Mitarbeiter mitarbeiter, String userName, String
> password, Role... roles) {
>                super();
>                this.mitarbeiter = mitarbeiter;
>                this.userName = userName;
>                this.password = password;
>                for(Role role : roles) {
>                        this.roles.add(role);
>                }
>        }
>
>        /**
>         * @return the id
>         */
>        public Long getId() {
>                return id;
>        }
>        /**
>         * @param id the id to set
>         */
>        public void setId(Long id) {
>                this.id = id;
>        }
>
>        /**
>         * @return the mitarbeiter
>         */
>        public Mitarbeiter getMitarbeiter() {
>                return mitarbeiter;
>        }
>
>        /**
>         * @param mitarbeiter the mitarbeiter to set
>         */
>        public void setMitarbeiter(Mitarbeiter mitarbeiter) {
>                this.mitarbeiter = mitarbeiter;
>        }
>
>        /**
>         * @return the password
>         */
>        public String getPassword() {
>                return password;
>        }
>
>        /**
>         * @param password the password to set
>         */
>        public void setPassword(String password) {
>                this.password = password;
>        }
>
>        /**
>         * @return the roles
>         */
>        public Set<Role> getRoles() {
>                return roles;
>        }
>
>        /**
>         * @param roles the roles to set
>         */
>        public void setRoles(Set<Role> roles) {
>                this.roles = roles;
>        }
>
>        /**
>         * @return the userName
>         */
>        public String getUserName() {
>                return userName;
>        }
>
>        /**
>         * @param userName the userName to set
>         */
>        public void setUserName(String userName) {
>                this.userName = userName;
>        }
>
>        public boolean equals(Object otherO) {
>                if(!(otherO instanceof User))
>                        return false;
>                return Util.equals(this.getId(), ((User)otherO).getId());
>        }
> }
>
> -----------------------------< end of entity class User
> >----------------------------------
>
>
>
>
> -------------------------< full log dump by WebSphere
> >----------------------
>
> ------Start of DE processing------ = [29.09.08 18:46:11:453 CEST] , key =
> org.apache.openjpa.persistence.PersistenceException
>
> com.ibm.ejs.container.BusinessExceptionMappingStrategy.setUncheckedException
> 506
> Exception = org.apache.openjpa.persistence.PersistenceException
> Source =
>
> com.ibm.ejs.container.BusinessExceptionMappingStrategy.setUncheckedException
> probeid = 506
> Stack Dump = <openjpa-1.0.3-SNAPSHOT-r420667:649224 nonfatal general
> error> org.apache.openjpa.persistence.PersistenceException:
> org.apache.openjpa.util.Id incompatible with org.apache.openjpa.util.IntId
>        at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:825)
>        at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:724)
>        at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:776)
>        at
> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:257)
>        at
>
> org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2168)
>        at
>
> org.apache.openjpa.jdbc.meta.strats.RelationFieldStrategy.loadEagerJoin(RelationFieldStrategy.java:510)
>        at
>
> org.apache.openjpa.jdbc.meta.FieldMapping.loadEagerJoin(FieldMapping.java:790)
>        at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:825)
>        at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:785)
>        at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:336)
>        at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:255)
>        at
>
> org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
>        at
>
> org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
>        at
> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:844)
>        at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:802)
>        at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:724)
>        at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:776)
>        at
> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:257)
>        at
>
> org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2168)
>        at
>
> org.apache.openjpa.jdbc.meta.strats.RelationToManyInverseKeyFieldStrategy.loadElement(RelationToManyInverseKeyFieldStrategy.java:87)
>        at
>
> org.apache.openjpa.jdbc.meta.strats.RelationCollectionInverseKeyFieldStrategy.loadElement(RelationCollectionInverseKeyFieldStrategy.java:76)
>        at
>
> org.apache.openjpa.jdbc.meta.strats.StoreCollectionFieldStrategy.load(StoreCollectionFieldStrategy.java:479)
>        at
> org.apache.openjpa.jdbc.meta.FieldMapping.load(FieldMapping.java:802)
>        at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:485)
>        at
>
> org.apache.openjpa.kernel.DelegatingStoreManager.load(DelegatingStoreManager.java:116)
>        at
> org.apache.openjpa.kernel.ROPStoreManager.load(ROPStoreManager.java:78)
>        at
>
> org.apache.openjpa.kernel.StateManagerImpl.loadFields(StateManagerImpl.java:2886)
>        at
> org.apache.openjpa.kernel.StateManagerImpl.load(StateManagerImpl.java:360)
>        at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:812)
>        at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:724)
>        at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:776)
>        at
> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:257)
>        at
>
> org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2168)
>        at
>
> org.apache.openjpa.jdbc.meta.strats.RelationFieldStrategy.loadEagerJoin(RelationFieldStrategy.java:510)
>        at
>
> org.apache.openjpa.jdbc.meta.FieldMapping.loadEagerJoin(FieldMapping.java:790)
>        at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:825)
>        at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:785)
>        at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:336)
>        at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:255)
>        at
>
> org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
>        at
>
> org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
>        at
> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:844)
>        at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:802)
>        at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:724)
>        at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:776)
>        at
> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:257)
>        at
>
> org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2168)
>        at
>
> org.apache.openjpa.jdbc.meta.strats.RelationFieldStrategy.loadEagerJoin(RelationFieldStrategy.java:510)
>        at
>
> org.apache.openjpa.jdbc.meta.FieldMapping.loadEagerJoin(FieldMapping.java:790)
>        at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:825)
>        at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:785)
>        at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:336)
>        at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:255)
>        at
>
> org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
>        at
>
> org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
>        at
> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:844)
>        at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:802)
>        at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:724)
>        at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:776)
>        at
> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:257)
>        at
>
> org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2168)
>        at
> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:251)
>        at
>
> org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
>        at
> org.apache.openjpa.kernel.QueryImpl.singleResult(QueryImpl.java:1289)
>        at
> org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1216)
>        at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:990)
>        at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:799)
>        at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:769)
>        at
> org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:533)
>        at
> org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:235)
>        at
>
> org.apache.openjpa.persistence.QueryImpl.getSingleResult(QueryImpl.java:300)
>        at
>
> com.mycompany.myproduct.ejb.session.PersistenceServiceBean.findPersistent(PersistenceServiceBean.java:246)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
>        at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>        at java.lang.reflect.Method.invoke(Method.java:618)
>        at
>
> com.ibm.ejs.container.interceptors.InvocationContextImpl.proceed(InvocationContextImpl.java:547)
>        at
>
> com.mycompany.myproduct.ejb.interceptor.PersistenceInterceptor.interceptPersistenceAction(PersistenceInterceptor.java:51)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
>        at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>        at java.lang.reflect.Method.invoke(Method.java:618)
>        at
>
> com.ibm.ejs.container.interceptors.InterceptorProxy.invokeInterceptor(InterceptorProxy.java:227)
>        at
>
> com.ibm.ejs.container.interceptors.InvocationContextImpl.proceed(InvocationContextImpl.java:526)
>        at
>
> com.ibm.ejs.container.interceptors.InvocationContextImpl.doAroundInvoke(InvocationContextImpl.java:184)
>        at
> com.ibm.ejs.container.EJSContainer.invoke(EJSContainer.java:5545)
>        at
>
> com.mycompany.myproduct.ejb.ejbInterfaces.EJSLocal0SLPersistenceServiceBean_2a6dfad6.findPersistent(EJSLocal0SLPersistenceServiceBean_2a6dfad6.java)
>        at
>
> com.mycompany.myproduct.ejb.session.SessionFacadeBean.findPersistent(SessionFacadeBean.java:77)
>        at
>
> com.mycompany.myproduct.ejb.ejbInterfaces.EJSRemote0SLSessionFacadeBean_4b075f78.findPersistent(EJSRemote0SLSessionFacadeBean_4b075f78.java)
>        at
>
> com.mycompany.myproduct.ejb.ejbInterfaces._EJSRemote0SLSessionFacadeBean_4b075f78_Tie.findPersistent(_EJSRemote0SLSessionFacadeBean_4b075f78_Tie.java)
>        at
>
> com.mycompany.myproduct.ejb.ejbInterfaces._EJSRemote0SLSessionFacadeBean_4b075f78_Tie._invoke(_EJSRemote0SLSessionFacadeBean_4b075f78_Tie.java)
>        at
>
> com.ibm.CORBA.iiop.ServerDelegate.dispatchInvokeHandler(ServerDelegate.java:621)
>        at
> com.ibm.CORBA.iiop.ServerDelegate.dispatch(ServerDelegate.java:474)
>        at com.ibm.rmi.iiop.ORB.process(ORB.java:503)
>        at com.ibm.CORBA.iiop.ORB.process(ORB.java:1571)
>        at com.ibm.rmi.iiop.Connection.respondTo(Connection.java:2701)
>        at com.ibm.rmi.iiop.Connection.doWork(Connection.java:2575)
>        at com.ibm.rmi.iiop.WorkUnitImpl.doWork(WorkUnitImpl.java:62)
>        at com.ibm.ejs.oa.pool.PooledThread.run(ThreadPool.java:118)
>        at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473)
> Caused by: java.lang.ClassCastException: org.apache.openjpa.util.Id
> incompatible with org.apache.openjpa.util.IntId
>        at
>
> com.mycompany.myproduct.ejb.entities.EntitySuperclass.pcCopyKeyFieldsFromObjectId(EntitySuperclass.java)
>        at
>
> com.mycompany.myproduct.ejb.entities.EntityClass.pcNewInstance(EntityClass.java)
>        at
> org.apache.openjpa.enhance.PCRegistry.newInstance(PCRegistry.java:121)
>        at
>
> org.apache.openjpa.kernel.StateManagerImpl.initialize(StateManagerImpl.java:253)
>        at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:330)
>        at
>
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:255)
>        at
>
> org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
>        at
>
> org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
>        at
> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:844)
>        at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:802)
>        ... 99 more
>
> Dump of callerThis =
> Object type = com.ibm.ejs.container.BusinessExceptionMappingStrategy
> [EMAIL PROTECTED]
>
> ==> Performing default dump from
> com.ibm.ejs.container.EJBContainerDiagnosticModule  = Mon Sep 29 18:46:11
> CEST 2008
> +Data for directive [defaultbindingsmaps] obtained. =
> >EJB DM: Object array. = null
> Dump of EJBContainer Internals =
> Object type = com.ibm.ejs.container.EJSContainer
> [EMAIL PROTECTED]
>
> +Data for directive [default] obtained. =
> Dump of ComponentMetaData =
>                                 *** START ComponentMetaData fields ***
>                                 J2EEName       =
>
> MyProduct_EAP_(Websphere)#MyProduct_EAP_EJB_Module.jar#PersistenceServiceBean
>                                 EJB Type       = STATELESS_SESSION
>                                 TX Type        = CONTAINER_MANAGED_TX
>                                 Module Version = 30
>                                     ******* ResRefList *******
>                                 ResRefList size=0
>                                       ****** LOCAL-TRANSACTION *******
>                                 Boundary=BEAN_METHOD
>                                 Resolver=APPLICATION
>                                 UnResolvedAction=ROLLBACK
>                                 *** END ComponentMetaData fields  ***
> +Data for directive [defaultcomponentmetadata] obtained. =
>
> Dump of EJBMethodInfo from EJSDeployedSupport =
>  *** START EJBMethodInfoImpl fields ***
>     method signature  =
> findPersistent:java.lang.Class,com.we4it.util.Entry[]
>     Method index      = 8
>     TX attribute      = TX_REQUIRED
>     AS attribute      = AS_UNKNOWN
>     CMP 1.x Isolation Level = TRANSACTION_NONE
>     CMP 1.x access intent(read-only attribute) = false
>     JDI signature     =
> (Ljava/lang/Class;[Lcom/we4it/util/Entry;)Ljava/lang/Object;
>     *** Security Policy Information ***
>     DenyAll     = false
>     PermitAll     = false
>     RolesAllowed     = null
>  *** END EJBMethodInfoImpl fields ***
>
> +Data for directive [defaultejbmethodinfo] obtained. =
> Dump of ContainerTx =
>
> *** Start ContainerTx Dump    ---> [EMAIL PROTECTED]
>
>  Tx Key                  =
> [EMAIL PROTECTED]
>  State                   = Active
>  Entered beforCompletion = false
>  Marked Rollback Only    = false
>  Method Began            = false
>  Isolation Level         = TRANSACTION_NONE
>  Callback BeanO          =
>
> StatelessBeanO(BeanId(MyProduct_EAP_(Websphere)#MyProduct_EAP_EJB_Module.jar#PersistenceServiceBean,
> null), state = IN_METHOD)
>
>  --- Dump of Enlisted Beans : 0 ----------------------
>
>
>  --- Dump of Access Intents : 0 ----------------------
>
> *** ContainerTx Dump Complete ---> [EMAIL PROTECTED]
>
> +Data for directive [defaultcontainertx] obtained. =
> ==> Dump complete for com.ibm.ejs.container.EJBContainerDiagnosticModule =
> Mon Sep 29 18:46:11 CEST 2008
> -----------------------< end of log dump by WebSphere
> >--------------------
>
> Mit freundlichen Grüßen  / Best regards
> We4IT GmbH
>
> Stephan Koops
>
>
> -----------------------------------------------------------------------------------------------------------------------------------------------------
> We4IT GmbH
> Haferwende 3a
> 28357 Bremen
>
> Tel.: +49 421-98973-24
> Fax: +49 421-98973-01
> E-Mail: [EMAIL PROTECTED]
> Internet: http://www.we4it.com
>
> HRB 20740, Amtsgericht Bremen
> Geschäftsführer: Stefan Sucker, Vicente Diaz Fernandez
> USt.-ID.-Nr. DE 220 859 831
>
> ------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Diese Nachricht ist vertraulich und ausschließlich für die adressierte
> Person und/oder Organisation bestimmt. Vertrauliche und/oder spezifische
> Informationen können hierin enthalten sein. Falls Sie ein nicht
> beabsichtigter Empfänger dieser Nachricht sind, sind das Kopieren,
> Verteilen und/oder das Aufnehmen aus dem Inhalt resultierender Handlungen
> untersagt. Haben Sie diese Nachricht fehlerhaft und/oder unvollständig
> erhalten, benachrichtigen Sie uns bitte umgehend unter unseren oben
> genannten Kontaktmöglichkeiten.
>
> This message is confidential and intended solely for the person or
> organization to which it is addressed. It may contain privileged and
> confidential information. If you are not the intended recipient, you
> should not copy, distribute or take any action on reliance on it. If you
> have received this transmission in error, please notify us immediately by
> e-mail at the above address.

Reply via email to