cengizhdde
Mitglied
Hallo zusammen,
ich arbeite mit Container Managed Persistence-Beans in der Version 2.0 unter JBoss 4.0 auf Windows XP Prof. Beim Deployment auf den Server erhalte ich folgende Fehlermeldung:
2005-05-27 10:30:13,316 DEBUG [org.jboss.util.NestedThrowable] org.jboss.util.NestedThrowable.parentTraceEnabled=true
2005-05-27 10:30:13,316 DEBUG [org.jboss.util.NestedThrowable] org.jboss.util.NestedThrowable.nestedTraceEnabled=false
2005-05-27 10:30:13,316 DEBUG [org.jboss.util.NestedThrowable] org.jboss.util.NestedThrowable.detectDuplicateNesting=true
2005-05-27 10:30:13,316 ERROR [org.jboss.ejb.EntityContainer] Starting failed jboss.j2ee:jndiName=CmpL001PcDeEjb,service=EJB
org.jboss.deployment.DeploymentException: Error compiling EJB-QL statement 'SELECT OBJECT(a) FROM CmpL003PcTrSchema as a WHERE LENGTH(a.level003_pc_id) = ?1 AND a.level003_pc_id LIKE ?2'; - nested throwable: (org.jboss.ejb.plugins.cmp.ejbql.ParseException: Encountered "a.level003_pc_id" at line 1, column 61.
Was expecting one of:
"CONCAT" ...
"SUBSTRING" ...
"(" ...
<STRING_LITERAL> ...
<STRING_VALUED_PARAMETER> ...
<STRING_VALUED_PATH> ...
)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCEJBQLQuery.<init>(JDBCEJBQLQuery.java:52)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCCommandFactory.createEJBQLQuery(JDBCCommandFactory.java:60)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCQueryManager.start(JDBCQueryManager.java:272)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.startStoreManager(JDBCStoreManager.java:490)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.start(JDBCStoreManager.java:381)
at org.jboss.ejb.plugins.CMPPersistenceManager.start(CMPPersistenceManager.java:157)
at org.jboss.ejb.EntityContainer.startService(EntityContainer.java:340)
at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:272)
at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:222)
at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
...............
...............
Folgende Einträge wurden von mir vorgenommen:
In der Home-Schnittstelle:
public java.util.Collection findByRequirements(int length,java.lang.String flag)
throws javax.ejb.FinderException,java.rmi.RemoteException;
Im ejb-jar.xml-Deskriptor:
<query>
<query-method>
<method-name>findByRequirements</method-name>
<method-params>
<method-param>int</method-param>
<method-param>java.lang.String</method-param>
</method-params>
</query-method>
<ejb-ql><![CDATA[SELECT OBJECT(a) FROM CmpL003PcDeSchema as a WHERE LENGTH(a.level003_pc_id) = ?1 AND a.level003_pc_id LIKE ?2]]></ejb-ql>
</query>
Soweit ich weiss gibt es in der Home-Schnittstelle mit der Übergabe von primitiven Datentypen (int) keine Probleme.
Eine mögliche Lösung die ich in den Foren gefunden habe ist die Implementierung von Declared-SQL statt der Query die ich im Deskriptor verwende.
Beispiel:
<declared-sql>
<select><alias>a</alias></select>
<where>WHERE LENGTH(a.level003_pc_id = {0}) AND a.level003_pc_id LIKE {1}</where>
<order></order>
</declared-sql>
Ich setze als Datenbank MySQL v4.0 ein.
Kann jemand helfen? Danke im Voraus.
ich arbeite mit Container Managed Persistence-Beans in der Version 2.0 unter JBoss 4.0 auf Windows XP Prof. Beim Deployment auf den Server erhalte ich folgende Fehlermeldung:
2005-05-27 10:30:13,316 DEBUG [org.jboss.util.NestedThrowable] org.jboss.util.NestedThrowable.parentTraceEnabled=true
2005-05-27 10:30:13,316 DEBUG [org.jboss.util.NestedThrowable] org.jboss.util.NestedThrowable.nestedTraceEnabled=false
2005-05-27 10:30:13,316 DEBUG [org.jboss.util.NestedThrowable] org.jboss.util.NestedThrowable.detectDuplicateNesting=true
2005-05-27 10:30:13,316 ERROR [org.jboss.ejb.EntityContainer] Starting failed jboss.j2ee:jndiName=CmpL001PcDeEjb,service=EJB
org.jboss.deployment.DeploymentException: Error compiling EJB-QL statement 'SELECT OBJECT(a) FROM CmpL003PcTrSchema as a WHERE LENGTH(a.level003_pc_id) = ?1 AND a.level003_pc_id LIKE ?2'; - nested throwable: (org.jboss.ejb.plugins.cmp.ejbql.ParseException: Encountered "a.level003_pc_id" at line 1, column 61.
Was expecting one of:
"CONCAT" ...
"SUBSTRING" ...
"(" ...
<STRING_LITERAL> ...
<STRING_VALUED_PARAMETER> ...
<STRING_VALUED_PATH> ...
)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCEJBQLQuery.<init>(JDBCEJBQLQuery.java:52)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCCommandFactory.createEJBQLQuery(JDBCCommandFactory.java:60)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCQueryManager.start(JDBCQueryManager.java:272)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.startStoreManager(JDBCStoreManager.java:490)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.start(JDBCStoreManager.java:381)
at org.jboss.ejb.plugins.CMPPersistenceManager.start(CMPPersistenceManager.java:157)
at org.jboss.ejb.EntityContainer.startService(EntityContainer.java:340)
at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:272)
at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:222)
at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
...............
...............
Folgende Einträge wurden von mir vorgenommen:
In der Home-Schnittstelle:
public java.util.Collection findByRequirements(int length,java.lang.String flag)
throws javax.ejb.FinderException,java.rmi.RemoteException;
Im ejb-jar.xml-Deskriptor:
<query>
<query-method>
<method-name>findByRequirements</method-name>
<method-params>
<method-param>int</method-param>
<method-param>java.lang.String</method-param>
</method-params>
</query-method>
<ejb-ql><![CDATA[SELECT OBJECT(a) FROM CmpL003PcDeSchema as a WHERE LENGTH(a.level003_pc_id) = ?1 AND a.level003_pc_id LIKE ?2]]></ejb-ql>
</query>
Soweit ich weiss gibt es in der Home-Schnittstelle mit der Übergabe von primitiven Datentypen (int) keine Probleme.
Eine mögliche Lösung die ich in den Foren gefunden habe ist die Implementierung von Declared-SQL statt der Query die ich im Deskriptor verwende.
Beispiel:
<declared-sql>
<select><alias>a</alias></select>
<where>WHERE LENGTH(a.level003_pc_id = {0}) AND a.level003_pc_id LIKE {1}</where>
<order></order>
</declared-sql>
Ich setze als Datenbank MySQL v4.0 ein.
Kann jemand helfen? Danke im Voraus.