Return-Path: Delivered-To: apmail-openjpa-users-archive@minotaur.apache.org Received: (qmail 41108 invoked from network); 30 Jun 2010 05:01:09 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 30 Jun 2010 05:01:09 -0000 Received: (qmail 38779 invoked by uid 500); 30 Jun 2010 05:01:09 -0000 Delivered-To: apmail-openjpa-users-archive@openjpa.apache.org Received: (qmail 38529 invoked by uid 500); 30 Jun 2010 05:01:07 -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 38518 invoked by uid 99); 30 Jun 2010 05:01:06 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 30 Jun 2010 05:01:06 +0000 X-ASF-Spam-Status: No, hits=2.0 required=10.0 tests=FREEMAIL_FROM,SPF_HELO_PASS,SPF_NEUTRAL,T_TO_NO_BRKTS_FREEMAIL,URI_HEX X-Spam-Check-By: apache.org Received-SPF: neutral (nike.apache.org: local policy) Received: from [216.139.236.158] (HELO kuber.nabble.com) (216.139.236.158) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 30 Jun 2010 05:00:59 +0000 Received: from jim.nabble.com ([192.168.236.80]) by kuber.nabble.com with esmtp (Exim 4.63) (envelope-from ) id 1OTpPZ-0003Ph-SH for users@openjpa.apache.org; Tue, 29 Jun 2010 22:00:37 -0700 Date: Tue, 29 Jun 2010 22:00:37 -0700 (PDT) From: Himadri To: users@openjpa.apache.org Message-ID: <1277874037869-5237213.post@n2.nabble.com> Subject: Issue with ID column for Database view as Entity (EJB3.0) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org Hi, My requirement is to use a database view as EJB3.0 Entity. I suppose this doesnt need any extra effort. table name tag is db view name instead of table name. This is how it looks like @Entity @Table(name="Property_V") @NamedQueries({ @NamedQuery(name="findPropsByName" ,query="Select o from PropertyView o where o.name = :a"), }) public class PropertyView extends PropertyViewBean {} I have only getter methods in Entity and no setters. The issue comes only when I declare ID column in entity. @Column(name="ID") public String id ; public String getId() { return this.id; } Its varchar2 in oracle database but somehow openjpa interpret it as BIGINT and throws me below ! This is coming when I try to call the namedquery. javax.ejb.EJBException: EJB Exception: ; nested exception is: org.apache.openjpa.persistence.ArgumentException: "com.sample.magic.poc.domain.PropertyViewBean.id" declares a column that is not compatible with the expected type "varchar". Column details: Full Name: Property_V.id Type: bigint Size: 0 Default: null Not Null: true at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.unwrapRemoteException(RemoteBusinessIntfProxy.java:105) at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.invoke(RemoteBusinessIntfProxy.java:87) at $Proxy0.getProperties(Unknown Source) at test.junit.TestSample.testView(TestSample.java:67) at test.junit.TestSample.main(TestSample.java:26) Caused by: org.apache.openjpa.persistence.ArgumentException: "com.tieto.magic.poc.domain.PropertyViewBean.id" declares a column that is not compatible with the expected type "varchar". Column details: Full Name: Property_V.id Type: bigint Size: 0 Default: null Not Null: true at org.apache.openjpa.jdbc.meta.MappingInfo.mergeColumn(MappingInfo.java:659) at org.apache.openjpa.jdbc.meta.MappingInfo.createColumns(MappingInfo.java:518) at org.apache.openjpa.jdbc.meta.ValueMappingInfo.getColumns(ValueMappingInfo.java:143) at org.apache.openjpa.jdbc.meta.strats.StringFieldStrategy.map(StringFieldStrategy.java:79) at org.apache.openjpa.jdbc.meta.FieldMapping.setStrategy(FieldMapping.java:120) at org.apache.openjpa.jdbc.meta.RuntimeStrategyInstaller.installStrategy(RuntimeStrategyInstaller.java:80) at org.apache.openjpa.jdbc.meta.FieldMapping.resolveMapping(FieldMapping.java:438) at org.apache.openjpa.jdbc.meta.FieldMapping.resolve(FieldMapping.java:403) at org.apache.openjpa.jdbc.meta.ClassMapping.resolveNonRelationMappings(ClassMapping.java:851) at org.apache.openjpa.jdbc.meta.MappingRepository.prepareMapping(MappingRepository.java:324) at org.apache.openjpa.meta.MetaDataRepository.preMapping(MetaDataRepository.java:662) at org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:549) at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:308) at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:363) at org.apache.openjpa.kernel.QueryImpl.classForName(QueryImpl.java:1563) at org.apache.openjpa.kernel.ExpressionStoreQuery$1.classForName(ExpressionStoreQuery.java:108) at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getClassMetaData(JPQLExpressionBuilder.java:168) at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.resolveClassMetaData(JPQLExpressionBuilder.java:139) at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaData(JPQLExpressionBuilder.java:225) at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaData(JPQLExpressionBuilder.java:195) at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateType(JPQLExpressionBuilder.java:188) at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.access$600(JPQLExpressionBuilder.java:69) at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder$ParsedJPQL.populate(JPQLExpressionBuilder.java:1754) at org.apache.openjpa.kernel.jpql.JPQLParser.populate(JPQLParser.java:56) at org.apache.openjpa.kernel.ExpressionStoreQuery.populateFromCompilation(ExpressionStoreQuery.java:153) at org.apache.openjpa.kernel.QueryImpl.newCompilation(QueryImpl.java:657) at org.apache.openjpa.kernel.QueryImpl.compilationFromCache(QueryImpl.java:638) at org.apache.openjpa.kernel.QueryImpl.compileForCompilation(QueryImpl.java:604) at org.apache.openjpa.kernel.QueryImpl.compileForExecutor(QueryImpl.java:666) at org.apache.openjpa.kernel.QueryImpl.compile(QueryImpl.java:573) at kodo.kernel.KodoQuery.compile(KodoQuery.java:75) at org.apache.openjpa.persistence.EntityManagerImpl.createNamedQuery(EntityManagerImpl.java:892) at org.apache.openjpa.persistence.EntityManagerImpl.createNamedQuery(EntityManagerImpl.java:77) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at weblogic.deployment.BasePersistenceContextProxyImpl.invoke(BasePersistenceContextProxyImpl My P.xml is a very simple one pocDS This works fine with actual table in database . Only view has this problem. Is there any specific configuration required when working with view ? Thanks in advance, -- View this message in context: http://openjpa.208410.n2.nabble.com/Issue-with-ID-column-for-Database-view-as-Entity-EJB3-0-tp5237213p5237213.html Sent from the OpenJPA Users mailing list archive at Nabble.com.