From dev-return-5475-apmail-openjpa-dev-archive=openjpa.apache.org@openjpa.apache.org Mon Aug 13 16:21:16 2007 Return-Path: Delivered-To: apmail-openjpa-dev-archive@www.apache.org Received: (qmail 66583 invoked from network); 13 Aug 2007 16:21:15 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 13 Aug 2007 16:21:15 -0000 Received: (qmail 58397 invoked by uid 500); 13 Aug 2007 16:21:13 -0000 Delivered-To: apmail-openjpa-dev-archive@openjpa.apache.org Received: (qmail 58368 invoked by uid 500); 13 Aug 2007 16:21:13 -0000 Mailing-List: contact dev-help@openjpa.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@openjpa.apache.org Delivered-To: mailing list dev@openjpa.apache.org Received: (qmail 58359 invoked by uid 99); 13 Aug 2007 16:21:13 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 13 Aug 2007 09:21:13 -0700 X-ASF-Spam-Status: No, hits=2.6 required=10.0 tests=DNS_FROM_OPENWHOIS,SPF_HELO_PASS,SPF_PASS,WHOIS_MYPRIVREG X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of lists@nabble.com designates 216.139.236.158 as permitted sender) Received: from [216.139.236.158] (HELO kuber.nabble.com) (216.139.236.158) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 13 Aug 2007 16:21:08 +0000 Received: from isper.nabble.com ([192.168.236.156]) by kuber.nabble.com with esmtp (Exim 4.63) (envelope-from ) id 1IKceu-00056K-4a for dev@openjpa.apache.org; Mon, 13 Aug 2007 09:20:48 -0700 Message-ID: <12129279.post@talk.nabble.com> Date: Mon, 13 Aug 2007 09:20:48 -0700 (PDT) From: Jesse Benson To: dev@openjpa.apache.org Subject: A few questions regarding Externalization. MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Nabble-From: jpbenson4849@winona.edu X-Virus-Checked: Checked by ClamAV on apache.org Is the use of floats or doubles jeporized by inaccurate internal representations? Is there any other scenario which would not be straight forward? ie: @ExternalValues({"1.4=1","1.5=2"}) @Type(Int.class) Double a; What should happen when there is a many to one mapping in @ExternalValues? ie: @ExternalValues({"1.4=1", "1.5=1"}) @Type(Int.class) Double a; What should happen when there is a one to many mapping in @ExternalValues? ie: @ExternalValues({"1.4=1", "1.4=2"}) @Type(Int.class) Double a; What exception should be thrown during a persist when the value of a field is set to a bad value? ie: @ExternalValues({"1.4=1", "1.5=2"}) @Type(Int.class) Double a = 9.9; I am getting the following, which is probably not what end users should see: <0.0.0 fatal store error> org.apache.openjpa.persistence.RollbackException: null at org.apache.openjpa.persistence.EntityManagerImpl46commit(EntityManagerImpl.java:420) ... Caused by: <0.0.0 nonfatal general error> org.apache.openjpa.persistence.PersistenceException: null at org.apache.openjpa.kernel.BrokerImpl46beforeCompletion(BrokerImpl.java:1800) at org.apache.openjpa.kernel.LocalManagedRuntime46commit(LocalManagedRuntime.java:80) at org.apache.openjpa.kernel.BrokerImpl46commit(BrokerImpl.java:1322) at org.apache.openjpa.kernel.DelegatingBroker46commit(DelegatingBroker.java:866) at org.apache.openjpa.persistence.EntityManagerImpl46commit(EntityManagerImpl.java:409) ... 15 more Caused by: java.lang.NullPointerException at org.apache.openjpa.kernel.StateManagerImpl46fetchInt(StateManagerImpl.java:2060) at org.apache.openjpa.jdbc.meta.strats.PrimitiveFieldStrategy46update(PrimitiveFieldStrategy.java:157) at org.apache.openjpa.jdbc.meta.strats.PrimitiveFieldStrategy46insert(PrimitiveFieldStrategy.java:117) at org.apache.openjpa.jdbc.meta.FieldMapping46insert(FieldMapping.java:554) at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager46insert(AbstractUpdateManager.java:203) at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager46populateRowManager(AbstractUpdateManager.java:145) at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager46flush(AbstractUpdateManager.java:85) at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager46flush(AbstractUpdateManager.java:72) at org.apache.openjpa.jdbc.kernel.JDBCStoreManager46flush(JDBCStoreManager.java:514) at org.apache.openjpa.kernel.DelegatingStoreManager46flush(DelegatingStoreManager.java:130) at org.apache.openjpa.kernel.BrokerImpl46flush(BrokerImpl.java:1976) at org.apache.openjpa.kernel.BrokerImpl46flushSafe(BrokerImpl.java:1874) at org.apache.openjpa.kernel.BrokerImpl46beforeCompletion(BrokerImpl.java:1792) ... 19 more <0.0.0 nonfatal general error> org.apache.openjpa.persistence.PersistenceException: null at org.apache.openjpa.kernel.BrokerImpl46beforeCompletion(BrokerImpl.java:1800) at org.apache.openjpa.kernel.LocalManagedRuntime46commit(LocalManagedRuntime.java:80) at org.apache.openjpa.kernel.BrokerImpl46commit(BrokerImpl.java:1322) at org.apache.openjpa.kernel.DelegatingBroker46commit(DelegatingBroker.java:866) at org.apache.openjpa.persistence.EntityManagerImpl46commit(EntityManagerImpl.java:409) at suite.r70.acommon.transactionservice.RLTransactionService46commitTransaction(RLTransactionService.java:49) ... Caused by: java.lang.NullPointerException at org.apache.openjpa.kernel.StateManagerImpl46fetchInt(StateManagerImpl.java:2060) at org.apache.openjpa.jdbc.meta.strats.PrimitiveFieldStrategy46update(PrimitiveFieldStrategy.java:157) at org.apache.openjpa.jdbc.meta.strats.PrimitiveFieldStrategy46insert(PrimitiveFieldStrategy.java:117) at org.apache.openjpa.jdbc.meta.FieldMapping46insert(FieldMapping.java:554) at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager46insert(AbstractUpdateManager.java:203) at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager46populateRowManager(AbstractUpdateManager.java:145) at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager46flush(AbstractUpdateManager.java:85) at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager46flush(AbstractUpdateManager.java:72) at org.apache.openjpa.jdbc.kernel.JDBCStoreManager46flush(JDBCStoreManager.java:514) at org.apache.openjpa.kernel.DelegatingStoreManager46flush(DelegatingStoreManager.java:130) at org.apache.openjpa.kernel.BrokerImpl46flush(BrokerImpl.java:1976) at org.apache.openjpa.kernel.BrokerImpl46flushSafe(BrokerImpl.java:1874) at org.apache.openjpa.kernel.BrokerImpl46beforeCompletion(BrokerImpl.java:1792) ... 19 more Nested Exception: java.lang.NullPointerException at org.apache.openjpa.kernel.StateManagerImpl46fetchInt(StateManagerImpl.java:2060) at org.apache.openjpa.jdbc.meta.strats.PrimitiveFieldStrategy46update(PrimitiveFieldStrategy.java:157) at org.apache.openjpa.jdbc.meta.strats.PrimitiveFieldStrategy46insert(PrimitiveFieldStrategy.java:117) at org.apache.openjpa.jdbc.meta.FieldMapping46insert(FieldMapping.java:554) at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager46insert(AbstractUpdateManager.java:203) at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager46populateRowManager(AbstractUpdateManager.java:145) at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager46flush(AbstractUpdateManager.java:85) at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager46flush(AbstractUpdateManager.java:72) at org.apache.openjpa.jdbc.kernel.JDBCStoreManager46flush(JDBCStoreManager.java:514) at org.apache.openjpa.kernel.DelegatingStoreManager46flush(DelegatingStoreManager.java:130) at org.apache.openjpa.kernel.BrokerImpl46flush(BrokerImpl.java:1976) at org.apache.openjpa.kernel.BrokerImpl46flushSafe(BrokerImpl.java:1874) at org.apache.openjpa.kernel.BrokerImpl46beforeCompletion(BrokerImpl.java:1792) at org.apache.openjpa.kernel.LocalManagedRuntime46commit(LocalManagedRuntime.java:80) at org.apache.openjpa.kernel.BrokerImpl46commit(BrokerImpl.java:1322) at org.apache.openjpa.kernel.DelegatingBroker46commit(DelegatingBroker.java:866) at org.apache.openjpa.persistence.EntityManagerImpl46commit(EntityManagerImpl.java:409) ... The behavior of a field with an Externalizer and a factory which accepts a StoreContext is different than that of one which does not. I instrumented the Constructors, Externalizers, and Factories used by different fields of an entity. The number of times each was called was dramaticly different. Is this expected behavior? When there exists a method which accepts a StoreContext, and there exists one which does not, providing the Externalizer annotation with this method name results in OpenJPA using one method some times, and the other method other times. I have noticed that the placement of the methods within the code plays a role in the order of which OpenJPA calls them. ie: @Externalizer("getName") ... public String getName(StoreContext ctx) { ... } public String getName() { ... } calls the two getName methods in a different order than @Externalizer("getName") ... public String getName() { ... } public String getName(StoreContext ctx) { ... } Is this as designed? Any clarification in the Externalizer documentation as to the specific expected behavior of OpenJPA would be helpful. -- View this message in context: http://www.nabble.com/A-few-questions-regarding-Externalization.-tf4262167.html#a12129279 Sent from the OpenJPA Developers mailing list archive at Nabble.com.