Greetings, I am using JBoss 3.2.3 with Postgres and encountering issues mapping beans/attributes to tables/fields. My table/field names sometimes have spaces and/or other characters that don't exactly match the bean, such as:
anonymous wrote : Mapping entity bean "Question" => Table "Questions" | Mapping entity bean "QuestionCategory" => Table "Question Categories" | Mapping entity bean getter getParentId() => Field "parent_id" Here are my descriptors and stack trace when I try to access the "Questions" table: ejb-jar.xml: <?xml version="1.0" encoding="UTF-8"?> | <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd"> | | <ejb-jar > | | <description><![CDATA[No Description.]]></description> | <display-name>Generated by XDoclet</display-name> | | <enterprise-beans> | | <!-- Session Beans --> | <session > | <description><![CDATA[EJB that computes Fibonacci suite]]></description> | <display-name>Fibo EJB</display-name> | | <ejb-name>Fibo</ejb-name> | | <home>tutorial.interfaces.FiboHome</home> | <remote>tutorial.interfaces.Fibo</remote> | <ejb-class>tutorial.ejb.FiboBean</ejb-class> | <session-type>Stateless</session-type> | <transaction-type>Container</transaction-type> | | </session> | | <!-- | To add session beans that you have deployment descriptor info for, add | a file to your XDoclet merge directory called session-beans.xml that contains | the <session></session> markup for those beans. | --> | | <!-- Entity Beans --> | <entity > | <description><![CDATA[EJB that manages a Question]]></description> | <display-name>Question EJB</display-name> | | <ejb-name>Question</ejb-name> | | <home>tutorial.interfaces.QuestionHome</home> | <remote>tutorial.interfaces.Question</remote> | | <ejb-class>tutorial.ejb.QuestionBean</ejb-class> | <persistence-type>Container</persistence-type> | <prim-key-class>java.lang.Long</prim-key-class> | <reentrant>False</reentrant> | <cmp-version>2.x</cmp-version> | <abstract-schema-name>Questions</abstract-schema-name> | <cmp-field > | <description><![CDATA[]]></description> | <field-name>id</field-name> | </cmp-field> | <cmp-field > | <description><![CDATA[]]></description> | <field-name>question</field-name> | </cmp-field> | <cmp-field > | <description><![CDATA[]]></description> | <field-name>categoryId</field-name> | </cmp-field> | <cmp-field > | <description><![CDATA[]]></description> | <field-name>level</field-name> | </cmp-field> | <primkey-field>id</primkey-field> | | <resource-ref > | <res-ref-name>jdbc/PostgresDS</res-ref-name> | <res-type>javax.sql.DataSource</res-type> | <res-auth>Container</res-auth> | </resource-ref> | | <query> | <description><![CDATA[Lookup Question By ID]]></description> | <query-method> | <method-name>findByPrimaryKey</method-name> | <method-params> | <method-param>java.lang.Long</method-param> | </method-params> | </query-method> | <result-type-mapping>Local</result-type-mapping> | <ejb-ql><![CDATA[SELECT OBJECT(qb) FROM Questions qb WHERE qb.id = ?1]]></ejb-ql> | </query> | <!-- Write a file named ejb-finders-QuestionBean.xml if you want to define extra finders. --> | </entity> | | <entity > | <description><![CDATA[EJB that manages a Question Category]]></description> | <display-name>Question Category EJB</display-name> | | <ejb-name>QuestionCategory</ejb-name> | | <home>tutorial.interfaces.QuestionCategoryHome</home> | <remote>tutorial.interfaces.QuestionCategory</remote> | | <ejb-class>tutorial.ejb.QuestionCategoryBean</ejb-class> | <persistence-type>Container</persistence-type> | <prim-key-class>java.lang.Long</prim-key-class> | <reentrant>False</reentrant> | <cmp-version>2.x</cmp-version> | <abstract-schema-name>QuestionCategory</abstract-schema-name> | <cmp-field > | <description><![CDATA[]]></description> | <field-name>id</field-name> | </cmp-field> | <cmp-field > | <description><![CDATA[]]></description> | <field-name>name</field-name> | </cmp-field> | <cmp-field > | <description><![CDATA[]]></description> | <field-name>parentId</field-name> | </cmp-field> | <primkey-field>id</primkey-field> | | <resource-ref > | <res-ref-name>jdbc/PostgresDS</res-ref-name> | <res-type>javax.sql.DataSource</res-type> | <res-auth>Container</res-auth> | </resource-ref> | | <query> | <description><![CDATA[Lookup Question Category By ID]]></description> | <query-method> | <method-name>findByPrimaryKey</method-name> | <method-params> | <method-param>java.lang.Long</method-param> | </method-params> | </query-method> | <result-type-mapping>Local</result-type-mapping> | <ejb-ql><![CDATA[SELECT OBJECT(qcb) FROM QuestionCategoryBean qcb WHERE qcb.id = ?1]]></ejb-ql> | </query> | <!-- Write a file named ejb-finders-QuestionCategoryBean.xml if you want to define extra finders. --> | </entity> | | <!-- | To add entity beans that you have deployment descriptor info for, add | a file to your XDoclet merge directory called entity-beans.xml that contains | the <entity></entity> markup for those beans. | --> | | <!-- Message Driven Beans --> | <!-- | To add message driven beans that you have deployment descriptor info for, add | a file to your XDoclet merge directory called message-driven-beans.xml that contains | the <message-driven></message-driven> markup for those beans. | --> | | </enterprise-beans> | | <!-- Relationships --> | | <!-- Assembly Descriptor --> | <assembly-descriptor > | <!-- | To add additional assembly descriptor info here, add a file to your | XDoclet merge directory called assembly-descriptor.xml that contains | the <assembly-descriptor></assembly-descriptor> markup. | --> | | <!-- finder permissions --> | | <!-- finder permissions --> | | <!-- finder permissions --> | | <!-- transactions --> | | <!-- finder transactions --> | </assembly-descriptor> | | </ejb-jar> jbosscmp-jdbc.xml <?xml version="1.0" encoding="UTF-8"?> | <!DOCTYPE jbosscmp-jdbc PUBLIC "-//JBoss//DTD JBOSSCMP-JDBC 3.0//EN" "http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_3_0.dtd"> | | <jbosscmp-jdbc> | <defaults> | </defaults> | | <enterprise-beans> | | <!-- | To add beans that you have deployment descriptor info for, add | a file to your XDoclet merge directory called jbosscmp-jdbc-beans.xml | that contains the <entity></entity> markup for those beans. | --> | | <entity> | <ejb-name>Question</ejb-name> | <datasource>java:/PostgresDS</datasource> | <datasource-mapping></datasource-mapping> | <table-name>Questions</table-name> | | <cmp-field> | <field-name>id</field-name> | <column-name>id</column-name> | | </cmp-field> | <cmp-field> | <field-name>question</field-name> | <column-name>question</column-name> | | </cmp-field> | <cmp-field> | <field-name>categoryId</field-name> | <column-name>category_id</column-name> | | </cmp-field> | <cmp-field> | <field-name>level</field-name> | <column-name>level</column-name> | | </cmp-field> | | </entity> | | <entity> | <ejb-name>QuestionCategory</ejb-name> | <table-name>Question Categories</table-name> | | <cmp-field> | <field-name>id</field-name> | <column-name>id</column-name> | | </cmp-field> | <cmp-field> | <field-name>name</field-name> | <column-name>name</column-name> | | </cmp-field> | <cmp-field> | <field-name>parentId</field-name> | <column-name>parent_id</column-name> | | </cmp-field> | | </entity> | | </enterprise-beans> | | </jbosscmp-jdbc> | jboss.xml <?xml version="1.0" encoding="UTF-8"?> | <!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 3.0//EN" "http://www.jboss.org/j2ee/dtd/jboss_3_0.dtd"> | | <jboss> | | <enterprise-beans> | | <!-- | To add beans that you have deployment descriptor info for, add | a file to your XDoclet merge directory called jboss-beans.xml that contains | the <session></session>, <entity></entity> and <message-driven></message-driven> | markup for those beans. | --> | | <entity> | <ejb-name>Question</ejb-name> | <jndi-name>ejb/tutorial/Question</jndi-name> | <resource-ref> | <res-ref-name>jdbc/PostgresDS</res-ref-name> | <jndi-name>java:/PostgresDS</jndi-name> | </resource-ref> | | </entity> | <entity> | <ejb-name>QuestionCategory</ejb-name> | <jndi-name>ejb/tutorial/QuestionCategory</jndi-name> | <resource-ref> | <res-ref-name>jdbc/PostgresDS</res-ref-name> | <jndi-name>java:/PostgresDS</jndi-name> | </resource-ref> | | </entity> | | <session> | <ejb-name>Fibo</ejb-name> | <jndi-name>ejb/tutorial/Fibo</jndi-name> | | </session> | | </enterprise-beans> | | <resource-managers> | </resource-managers> | | </jboss> | Stacktrace: Find failed: java.sql.SQLException: ERROR: Relation "question" does not exist | | javax.ejb.FinderException: Find failed: java.sql.SQLException: ERROR: Relation "question" does not exist | | at org.jboss.ejb.plugins.cmp.jdbc.JDBCAbstractQueryCommand.execute(JDBCAbstractQueryCommand.java:238) | at org.jboss.ejb.plugins.cmp.jdbc.JDBCAbstractQueryCommand.execute(JDBCAbstractQueryCommand.java:111) | at org.jboss.ejb.plugins.cmp.jdbc.JDBCFindByPrimaryKeyQuery.execute(JDBCFindByPrimaryKeyQuery.java:108) | at org.jboss.ejb.plugins.cmp.jdbc.JDBCFindEntityCommand.execute(JDBCFindEntityCommand.java:49) | at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.findEntity(JDBCStoreManager.java:571) | at org.jboss.ejb.plugins.CMPPersistenceManager.findEntity(CMPPersistenceManager.java:299) | at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.findEntity(CachedConnectionInterceptor.java:300) | at org.jboss.ejb.EntityContainer.find(EntityContainer.java:697) | 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:324) | at org.jboss.ejb.EntityContainer$ContainerInterceptor.invokeHome(EntityContainer.java:1043) | at org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractInterceptor.java:88) | at org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invokeHome(EntitySynchronizationInterceptor.java:197) | at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invokeHome(CachedConnectionInterceptor.java:214) | at org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractInterceptor.java:88) | at org.jboss.ejb.plugins.EntityInstanceInterceptor.invokeHome(EntityInstanceInterceptor.java:89) | at org.jboss.ejb.plugins.EntityLockInterceptor.invokeHome(EntityLockInterceptor.java:61) | at org.jboss.ejb.plugins.EntityCreationInterceptor.invokeHome(EntityCreationInterceptor.java:28) | at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:88) | at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:267) | at org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome(TxInterceptorCMT.java:98) | at org.jboss.ejb.plugins.SecurityInterceptor.invokeHome(SecurityInterceptor.java:92) | at org.jboss.ejb.plugins.LogInterceptor.invokeHome(LogInterceptor.java:120) | at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invokeHome(ProxyFactoryFinderInterceptor.java:93) | at org.jboss.ejb.EntityContainer.internalInvokeHome(EntityContainer.java:483) | at org.jboss.ejb.Container.invoke(Container.java:720) | 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:324) | at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284) | at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546) | at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:101) | at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:90) | at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:46) | at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:45) | at org.jboss.proxy.ejb.HomeInterceptor.invoke(HomeInterceptor.java:173) | at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:85) | at $Proxy43.findByPrimaryKey(Unknown Source) | at tutorial.web.ComputeServlet.doPost(ComputeServlet.java:107) | at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) | at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) | at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256) | at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) | at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) | at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) | at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) | at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) | at org.jboss.web.tomcat.security.JBossSecurityMgrRealm.invoke(JBossSecurityMgrRealm.java:220) | at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) | at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246) | at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) | at org.jboss.web.tomcat.tc4.statistics.ContainerStatsValve.invoke(ContainerStatsValve.java:76) | at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) | at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) | at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) | at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2417) | at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) | at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) | at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171) | at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) | at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172) | at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) | at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:65) | at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) | at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:577) | at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) | at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) | at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) | at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174) | at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) | at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) | at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) | at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:197) | at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:781) | at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:549) | at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:605) | at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:677) | at java.lang.Thread.run(Thread.java:534) View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3836929#3836929 Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3836929 ------------------------------------------------------- This SF.Net email is sponsored by: Oracle 10g Get certified on the hottest thing ever to hit the market... Oracle 10g. Take an Oracle 10g class now, and we'll give you the exam FREE. http://ads.osdn.com/?ad_id=3149&alloc_id=8166&op=click _______________________________________________ JBoss-user mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-user
