Return-Path: X-Original-To: apmail-openjpa-users-archive@minotaur.apache.org Delivered-To: apmail-openjpa-users-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 90C7C7E3E for ; Tue, 27 Dec 2011 09:59:04 +0000 (UTC) Received: (qmail 83345 invoked by uid 500); 27 Dec 2011 09:59:04 -0000 Delivered-To: apmail-openjpa-users-archive@openjpa.apache.org Received: (qmail 83276 invoked by uid 500); 27 Dec 2011 09:59:03 -0000 Mailing-List: contact users-help@openjpa.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: users@openjpa.apache.org Delivered-To: mailing list users@openjpa.apache.org Received: (qmail 83268 invoked by uid 99); 27 Dec 2011 09:59:03 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 27 Dec 2011 09:59:03 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=5.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: local policy) Received: from [31.222.179.249] (HELO rackspace1.logentis.net) (31.222.179.249) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 27 Dec 2011 09:58:55 +0000 Received: from localhost (localhost [127.0.0.1]) by rackspace1.logentis.net (Postfix) with ESMTP id 44B12E8010 for ; Tue, 27 Dec 2011 10:58:35 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at rackspace1.logentis.net Received: from rackspace1.logentis.net ([127.0.0.1]) by localhost (rackspace1.logentis.net [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id eB1pJ94BrMu1 for ; Tue, 27 Dec 2011 10:58:34 +0100 (CET) Received: from [192.168.170.10] (unknown [193.41.253.138]) (Authenticated sender: ml@logemann.org) by rackspace1.logentis.net (Postfix) with ESMTPSA id 9F0B6C4DB4 for ; Tue, 27 Dec 2011 10:12:46 +0100 (CET) Content-Type: text/plain; charset=iso-8859-1 Mime-Version: 1.0 (Apple Message framework v1251.1) Subject: Re: org.apache.openjpa.util.LongId cannot be cast to MyDomainObject From: Marc Logemann In-Reply-To: <88CB62524DE0644AAE21D8BAB8CFC0CA27B7F5@dueexs06.bertschi.domain> Date: Tue, 27 Dec 2011 10:12:47 +0100 Content-Transfer-Encoding: quoted-printable Message-Id: References: <88CB62524DE0644AAE21D8BAB8CFC0CA27B7F5@dueexs06.bertschi.domain> To: users@openjpa.apache.org X-Mailer: Apple Mail (2.1251.1) X-Virus-Checked: Checked by ClamAV on apache.org Then i dont get the "referencedColumnName" Feature, because the db field = of the @ID fields doesnt need to be declared, this JPA does already = know.=20 I will migrate it nevertheless and leave out the "referencedColumnName" = completely. --- regards Marc Logemann http://www.logemann.org http://www.logentis.de Am 23.12.2011 um 09:39 schrieb Boblitz John: > Hello Marc, >=20 > You stated: "Please note that referencedColumnName value is not the = primary key. " >=20 > Accorging to the Manual (13.8.4) - the referencedColumnName is=20 > "The name of the primary key column being joined to. If there is only = one identity > field in the related entity class, the join column name defaults to = the name of the > identity field's column." >=20 > Regards, >=20 > =EF=BB=BF=20 >=20 > John >=20 > ----=20 >=20 > Who is General Failure, and why is he reading my hard disk? >=20 >=20 >=20 >=20 >=20 >=20 >=20 >=20 >> -----Urspr=FCngliche Nachricht----- >> Von: Marc Logemann [mailto:li@logemann.org]=20 >> Gesendet: Donnerstag, 22. Dezember 2011 17:55 >> An: users@openjpa.apache.org >> Betreff: Re: org.apache.openjpa.util.LongId cannot be cast to=20 >> MyDomainObject >>=20 >> Hi, >>=20 >> The customer has the same database, the same application=20 >> (same build and stuff like that) and same everything. This is=20 >> what freaks me out ;-) Of course something must be different... >> I compared the schema several times and they are the same. >>=20 >> Turning on Trace is quite impossible on a production machine.=20 >> I would rather do a DB migration and use the primary key=20 >> "oid" as foreign key constraint instead of some random string field. >>=20 >> Perhaps i can get my hands on another machine which is not=20 >> production and also results in that error. Then i could do=20 >> remote debugging. But even with remote debugging turned on,=20 >> its not likely that i fully understand whats wrong. >>=20 >> --- >> regards >> Marc Logemann >> http://www.logemann.org >> http://www.logentis.de >>=20 >>=20 >>=20 >>=20 >> Am 22.12.2011 um 17:00 schrieb Kevin Sutter: >>=20 >>> Hi Marc, >>> I'm not seeing anything wrong with your object model=20 >> definition. But,=20 >>> it definitely looks like OpenJPA is getting confused on this join=20 >>> column reference (string id) and the type of the primary=20 >> key (long). =20 >>> Have you been able to verify that the database schemas are=20 >> consistent=20 >>> with the object model? Does your customer and your development=20 >>> system(s) use the same database type (ie. mysql)? I really=20 >> don't think it's a data issue. >>> It looks more like a data-definition issue either in the=20 >> object model=20 >>> or the database itself. >>>=20 >>> How about your persistence unit definition? Does the customer=20 >>> environment and your development environment use the same=20 >>> persistence.xml? For example, do you dynamically sync the database=20= >>> schema with the object model, or do you pre-create the=20 >> database schema via ddl? >>>=20 >>> I'd start with turning on Trace and comparing the flows to=20 >> see where=20 >>> there are differences. >>>=20 >>> BTW, I totally agree with your comment that OpenJPA is too=20 >> complex to=20 >>> comprehend in just a few hours... :-) >>>=20 >>> Good luck, >>> Kevin >>>=20 >>> On Wed, Dec 21, 2011 at 5:21 PM, Marc Logemann=20 >> wrote: >>>=20 >>>> Hi, >>>>=20 >>>> me again. This time with something i also dont get. >>>>=20 >>>> OrderPosition.class >>>> --------------------------- >>>> @XmlTransient >>>> @ManyToOne >>>> @JoinColumn(name =3D "con_ship_id", referencedColumnName =3D "id") >>>> ContainerShipment containerShipment; >>>>=20 >>>> ContainerShipment.class >>>> ----------------------------------- >>>> @XmlTransient >>>> @Id >>>> @GeneratedValue(strategy =3D GenerationType.TABLE, generator =3D >>>> "contShipGen") >>>> @TableGenerator(name =3D "contShipGen", table =3D "jpa_sequence",=20= >>>> pkColumnName =3D "ID", >>>> pkColumnValue =3D "ContainerShipment", valueColumnName =3D=20= >>>> "SEQUENCE_VALUE", initialValue =3D 2000, allocationSize =3D 2) >>>> long oid; >>>>=20 >>>> @Column(name =3D "id") >>>> String id; >>>>=20 >>>> @OneToMany(mappedBy =3D "containerShipment", cascade =3D=20 >>>> CascadeType.ALL, fetch =3D FetchType.EAGER) >>>> List orderPositions; >>>>=20 >>>>=20 >>>> Please note that referencedColumnName value is not the=20 >> primary key.=20 >>>> Its just a simple String/varchar field. >>>>=20 >>>> Following Stack produced. Even more scary. This stack=20 >> doesnt appear=20 >>>> on my developer machine with test DB, but on customer machine with=20= >>>> different dataset. So it looks data related but i cant be for sure=20= >>>> because i have not seen any data problems in the DB. >>>> Thanks again for hints. It seems that inside TransferFieldManager,=20= >>>> there is a LongId on field index =3D 12 instead of a=20 >> ContainerShipment.=20 >>>> But i dont know why its there. As i said, i cant say for=20 >> sure because=20 >>>> on my development machine everything is fine which makes=20 >> debugging a=20 >>>> little bit hard. Its also not that easy to fully understand the=20 >>>> OpenJPA code. Its just too complex to analyze in a few hours. >>>>=20 >>>>=20 >>>>=20 >>>> >>>> org.apache.openjpa.persistence.PersistenceException: >>>> org.apache.openjpa.util.LongId cannot be cast to=20 >>>> de.logentis.bwh.model.ContainerShipment >>>> FailedObject: SELECT cs FROM ContainerShipment cs=20 >> [java.lang.String] >>>> at=20 >> org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:1008) >>>> at=20 >> org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:907) >>>> at >>>>=20 >> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStore >> Manager.java:1041) >>>> at >>>>=20 >> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult >> .java:280) >>>> at >>>>=20 >> org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(Selec >> tImpl.java:2381) >>>> at >>>>=20 >> org.apache.openjpa.jdbc.meta.strats.RelationToManyInverseKeyFi >> = eldStrategy.loadElement(RelationToManyInverseKeyFieldStrategy.java:90) >>>> at >>>>=20 >> org.apache.openjpa.jdbc.meta.strats.RelationCollectionInverseK >> eyFieldStrategy.loadElement(RelationCollectionInverseKeyFieldS >> trategy.java:76) >>>> at >>>>=20 >> org.apache.openjpa.jdbc.meta.strats.StoreCollectionFieldStrate >> gy.processEagerParallelResult(StoreCollectionFieldStrategy.java:312) >>>> at >>>>=20 >> org.apache.openjpa.jdbc.meta.strats.StoreCollectionFieldStrate >> gy.loadEagerParallel(StoreCollectionFieldStrategy.java:246) >>>> at >>>>=20 >> org.apache.openjpa.jdbc.meta.FieldMapping.loadEagerParallel(Fi >> eldMapping.java:916) >>>> at >>>>=20 >> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStore >> Manager.java:1114) >>>> at >>>>=20 >> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStore >> Manager.java:1067) >>>> at >>>>=20 >> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeStat >> e(JDBCStoreManager.java:438) >>>> at >>>>=20 >> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDB >> CStoreManager.java:333) >>>> at >>>>=20 >> org.apache.openjpa.kernel.DelegatingStoreManager.initialize(De >> legatingStoreManager.java:112) >>>> at >>>>=20 >> org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreM >> anager.java:57) >>>> at >>>>=20 >> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1027) >>>> at=20 >> org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:985) >>>> at=20 >> org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:907) >>>> at >>>>=20 >> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStore >> Manager.java:1041) >>>> at >>>>=20 >> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult >> .java:280) >>>> at >>>>=20 >> org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(Selec >> tImpl.java:2381) >>>> at >>>>=20 >> org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult >> .java:274) >>>> at >>>>=20 >> org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.ge >> tResultObject(InstanceResultObjectProvider.java:59) >>>> at >>>>=20 >> org.apache.openjpa.lib.rop.EagerResultList.(EagerResultL >> ist.java:36) >>>> at=20 >> org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1251) >>>> at=20 >> org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:1007) >>>> at=20 >> org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:863) >>>> at=20 >> org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:794) >>>> at >>>>=20 >> org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQu >> ery.java:542) >>>> at >>>>=20 >> org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:315) >>>> at >>>>=20 >> org.apache.openjpa.persistence.QueryImpl.getResultList(QueryIm >> pl.java:331) >>>> at >>>>=20 >> de.netstorsys.dao.repositories.ContainerShipmentRepositoryImpl >> .findAllCustom(ContainerShipmentRepositoryImpl.java:39) >>>> at=20 >> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>> at >>>>=20 >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccess >> orImpl.java:39) >>>> at >>>>=20 >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMeth >> odAccessorImpl.java:25) >>>> at java.lang.reflect.Method.invoke(Method.java:597) >>>> at >>>>=20 >> org.springframework.aop.support.AopUtils.invokeJoinpointUsingR >> eflection(AopUtils.java:311) >>>> at >>>>=20 >> org.springframework.aop.framework.ReflectiveMethodInvocation.i >> nvokeJoinpoint(ReflectiveMethodInvocation.java:183) >>>> at >>>>=20 >> org.springframework.aop.framework.ReflectiveMethodInvocation.p >> roceed(ReflectiveMethodInvocation.java:150) >>>> at >>>>=20 >> org.springframework.transaction.interceptor.TransactionInterce >> ptor.invoke(TransactionInterceptor.java:110) >>>> at >>>>=20 >> org.springframework.aop.framework.ReflectiveMethodInvocation.p >> roceed(ReflectiveMethodInvocation.java:172) >>>> at >>>>=20 >> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(Jd >> kDynamicAopProxy.java:202) >>>> at $Proxy903.findAllCustom(Unknown Source) >>>> at=20 >> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>> at >>>>=20 >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccess >> orImpl.java:39) >>>> at >>>>=20 >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMeth >> odAccessorImpl.java:25) >>>> at java.lang.reflect.Method.invoke(Method.java:597) >>>> at >>>>=20 >> org.springframework.data.repository.core.support.RepositoryFac >> torySupport$QueryExecutorMethodInterceptor.executeMethodOn(Rep >> ositoryFactorySupport.java:368) >>>> at >>>>=20 >> org.springframework.data.repository.core.support.RepositoryFac >> torySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFa >> ctorySupport.java:338) >>>> at >>>>=20 >> org.springframework.aop.framework.ReflectiveMethodInvocation.p >> roceed(ReflectiveMethodInvocation.java:172) >>>> at >>>>=20 >> org.springframework.transaction.interceptor.TransactionInterce >> ptor.invoke(TransactionInterceptor.java:110) >>>> at >>>>=20 >> org.springframework.aop.framework.ReflectiveMethodInvocation.p >> roceed(ReflectiveMethodInvocation.java:172) >>>> at >>>>=20 >> org.springframework.dao.support.PersistenceExceptionTranslatio >> nInterceptor.invoke(PersistenceExceptionTranslationInterceptor >> .java:155) >>>> at >>>>=20 >> org.springframework.aop.framework.ReflectiveMethodInvocation.p >> roceed(ReflectiveMethodInvocation.java:172) >>>> at >>>>=20 >> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(Jd >> kDynamicAopProxy.java:202) >>>> at $Proxy904.findAllCustom(Unknown Source) >>>> at >>>>=20 >> de.netstorsys.controller.rest.ContainerShipmentRestController. >> showAll(ContainerShipmentRestController.java:53) >>>> at=20 >> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>> at >>>>=20 >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccess >> orImpl.java:39) >>>> at >>>>=20 >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMeth >> odAccessorImpl.java:25) >>>> at java.lang.reflect.Method.invoke(Method.java:597) >>>> at >>>>=20 >> org.springframework.web.bind.annotation.support.HandlerMethodI >> nvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) >>>> at >>>>=20 >> org.springframework.web.servlet.mvc.annotation.AnnotationMetho >> dHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAda >> pter.java:426) >>>> at >>>>=20 >> org.springframework.web.servlet.mvc.annotation.AnnotationMetho >> dHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414) >>>> at >>>>=20 >> org.springframework.web.servlet.DispatcherServlet.doDispatch(D >> ispatcherServlet.java:790) >>>> at >>>>=20 >> org.springframework.web.servlet.DispatcherServlet.doService(Di >> spatcherServlet.java:719) >>>> at >>>>=20 >> org.springframework.web.servlet.FrameworkServlet.processReques >> t(FrameworkServlet.java:644) >>>> at >>>>=20 >> org.springframework.web.servlet.FrameworkServlet.doGet(Framewo >> rkServlet.java:549) >>>> at=20 >> javax.servlet.http.HttpServlet.service(HttpServlet.java:617) >>>> at=20 >> javax.servlet.http.HttpServlet.service(HttpServlet.java:717) >>>> at >>>>=20 >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilt >> er(ApplicationFilterChain.java:290) >>>> at >>>>=20 >> org.apache.catalina.core.ApplicationFilterChain.doFilter(Appli >> cationFilterChain.java:206) >>>> at >>>>=20 >> org.springframework.web.filter.CharacterEncodingFilter.doFilte >> rInternal(CharacterEncodingFilter.java:88) >>>> at >>>>=20 >> org.springframework.web.filter.OncePerRequestFilter.doFilter(O >> ncePerRequestFilter.java:76) >>>> at >>>>=20 >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilt >> er(ApplicationFilterChain.java:235) >>>> at >>>>=20 >> org.apache.catalina.core.ApplicationFilterChain.doFilter(Appli >> cationFilterChain.java:206) >>>> at >>>>=20 >> org.apache.catalina.core.StandardWrapperValve.invoke(StandardW >> rapperValve.java:233) >>>> at >>>>=20 >> org.apache.catalina.core.StandardContextValve.invoke(StandardC >> ontextValve.java:191) >>>> at >>>>=20 >> org.apache.catalina.core.StandardHostValve.invoke(StandardHost >> Valve.java:127) >>>> at >>>>=20 >> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReport >> Valve.java:102) >>>> at >>>>=20 >> org.apache.catalina.core.StandardEngineValve.invoke(StandardEn >> gineValve.java:109) >>>> at >>>>=20 >> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdap >> ter.java:293) >>>> at >>>>=20 >> org.apache.coyote.http11.Http11Processor.process(Http11Process >> or.java:859) >>>> at >>>>=20 >> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandle >> r.process(Http11Protocol.java:602) >>>> at >>>>=20 >> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint. >> java:489) >>>> at java.lang.Thread.run(Thread.java:680) >>>> Caused by: java.lang.ClassCastException:=20 >>>> org.apache.openjpa.util.LongId cannot be cast to=20 >> de.logentis.bwh.model.ContainerShipment >>>> at >>>>=20 >> = de.logentis.bwh.model.OrderPosition.pcReplaceField(OrderPosition.java) >>>> at >>>>=20 >> org.apache.openjpa.kernel.StateManagerImpl.replaceField(StateM >> anagerImpl.java:3162) >>>> at >>>>=20 >> org.apache.openjpa.kernel.StateManagerImpl.storeObjectField(St >> ateManagerImpl.java:2596) >>>> at >>>>=20 >> org.apache.openjpa.kernel.StateManagerImpl.storeObject(StateMa >> nagerImpl.java:2586) >>>> at >>>>=20 >> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.setMappedBy(JD >> BCStoreManager.java:505) >>>> at >>>>=20 >> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeStat >> e(JDBCStoreManager.java:431) >>>> at >>>>=20 >> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDB >> CStoreManager.java:333) >>>> at >>>>=20 >> org.apache.openjpa.kernel.DelegatingStoreManager.initialize(De >> legatingStoreManager.java:112) >>>> at >>>>=20 >> org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreM >> anager.java:57) >>>> at >>>>=20 >> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1027) >>>> at=20 >> org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:985) >>>> ... 86 more >>>> --- >>>> regards >>>> Marc Logemann >>>> http://www.logemann.org >>>> http://www.logentis.de >>>>=20 >>>>=20 >>>>=20 >>>>=20 >>>>=20 >>=20