EJQ-QL fejl
jeg har følgende:JSP -servlet - sessionBean - EntityBean på en Jboss 4.0.3
EntityBean:
Customer.java // local interface
CustomerBean.java // Entitybean
CustomerHome.java // Localhome interface
Jeg prøver at få en finder findByName metode til at virke MEN uden held.
NB: Jeg kan godt få kontakt til database ved at bruge findByPrimaryKey(). Jeg får en deploy fejl efter at jeg har tilføjet findByName i interfacet og ejb.jar.xml filen.
// localHome Interface
public interface CustomerHome extends EJBLocalHome
{
public Customer create(String name, String password, String role) throws CreateException;
public Collection findByName(String name)throws FinderException;
public Customer findByPrimaryKey(String key)throws FinderException;
}
// 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>
<enterprise-beans>
<!-- =============================================================================== -->
<!-- SESSION BEAN -->
<!-- =============================================================================== -->
<session>
<ejb-name>UserManagerEJB</ejb-name>
<home>userManager.UserManagerHome</home>
<remote>userManager.UserManager</remote>
<ejb-class>userManager.UserManagerBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
<entity>
<!-- =============================================================================== -->
<!-- ENTITY BEAN -->
<!-- =============================================================================== -->
<ejb-name>CustomerEJB</ejb-name>
<local-home>customer.CustomerHome</local-home>
<local>customer.Customer</local>
<ejb-class>customer.CustomerBean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.String</prim-key-class>
<reentrant>False</reentrant>
<cmp-version>2.x</cmp-version>
<abstract-schema-name>Customer</abstract-schema-name>
<cmp-field >
<field-name>username</field-name>
</cmp-field>
<cmp-field >
<field-name>password</field-name>
</cmp-field>
<cmp-field >
<field-name>role</field-name>
</cmp-field>
<primkey-field>username</primkey-field>
<!-- =============================================================================== -->
<!-- EJB QL -->
<!-- =============================================================================== -->
<query>
<query-method>
<method-name>findByName</method-name>
<method-params>
<method-param>java.lang.String</method-param>
</method-params>
</query-method>
<ejb-ql>SELECT OBJECT(p) FROM customer p WHERE p.username = ?1
</ejb-ql>
</query>
</entity>
</enterprise-beans>
</ejb-jar>
// fejle fra jboss
Was expecting one of:
"IN" ...
<ABSTRACT_SCHEMA> ...
)
--- MBEANS THAT ARE THE ROOT CAUSE OF THE PROBLEM ---
ObjectName: jboss.j2ee:jndiName=customer,service=EJB
State: FAILED
Reason: org.jboss.deployment.DeploymentException: Error compiling EJB-QL statement 'SELECT OBJECT(p) FROM customer p WHERE p.username = ?1'; - nested throwable: (org.jboss.ejb.plugins.cmp.ejbql.ParseException: Encountered "customer" at line 1, column 23.
Was expecting one of:
"IN" ...
<ABSTRACT_SCHEMA> ...
)
Nogen det ved hvad der går galt ???
