Howdy,

I'm new to both EJB and JBoss and boy, do I have a
problem.  I've been over the documentation on the
JBoss web site for days and through the mailing list
archive from top to bottom but didn't find anyone else
having this specific problem.

I can't get certain custom finders to work.

This is the error message I get in the JBoss log when
starting the server:

        [Container factory] Finder:idandname
        [JAWS] Could not create the finder findByIdAndName,
because no matching CMP field was found.

================================================

Here is the snippet from the included jaws.xml:

        <entity>
                <ejb-name>ArticleBean</ejb-name>
                <pk-constraint>true</pk-constraint>
                <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>
                <finder>
                        <name>findById</name>
                        <query>ID = {0}</query>
                        <order>ID DESC</order>
                </finder>
                <finder>
                        <name>findByIdAndName</name>
                        <query><![CDATA[id ={0} AND
name={1}]]></query>
                        <order>id DESC</order>
                </finder>
        </entity>

===================================================

Here is the Home interface of the EJB:

package com.nathanfrund.xwl;

import java.rmi.RemoteException;
import javax.ejb.*;
import java.util.Collection;

/**
This interface defines the home interface for the
'Article' EJB.
*/
public interface ArticleHome extends EJBHome
{
    /**
    Create a new XWL instance.
    */
    public Article create(Integer id) throws
RemoteException, CreateException;
    
    /**
    Find the Article with the specified ID.  This
method is not implemented by
    the Bean, but by the container.
    */
    public Article findByPrimaryKey(Integer id) throws
RemoteException, FinderException;
    
    /**
    Finds the Article whose 'name' attribute matches
that specified.  This
    method is implemented byt he container
    */
    public Collection findByName(String name) throws
RemoteException, FinderException;
    
    /**
    Get all Article instances.  This method is
implemented by the container
    */
    public Collection findAll() throws
RemoteException, FinderException;
    
    public Collection findByIdAndName(Integer id,
String name) throws RemoteException, FinderException;
}

=====================================================

The overridden "findById" works perfectly and of
course the "findByIdAndName" returns an empty
Collection when called by a client.  Any help would be
*GREATLY* appreciated.





For completeness sake here's the CMP bean:

=======================================================

package com.nathanfrund.xwl;

import java.rmi.RemoteException;
import javax.ejb.*;
import org.jboss.util.AutoNumberFactory;
/**
This class contains the implementation for the methods
specified in the home
and remote interfaces for the 'XWL' EJB.
*/
public class ArticleBean implements EntityBean
{
    transient private EntityContext ctx;
    
    static java.util.Date now = new java.util.Date();
    
    public Integer id;
    public boolean reviewed;
    public java.sql.Date date;
    public java.sql.Time time;
    public String topic;
    public String title;
    public String department;
    public String summary;
    public String body;
    public String name;
    public String email;
    
    /**
        Create an instance of a CD.  Note that this
method returns null because
        the real creation is managed by the EJB
container.
    */
    public Integer ejbCreate (Integer _id)
    {
        id =
AutoNumberFactory.getNextInteger("ArticleBean");
        date = new java.sql.Date(now.getTime());
        time = new java.sql.Time(now.getTime());
        return null;
    }

    /**
        Called when the object has been instantiated;
does nothing here.
    */
    public void ejbPostCreate(Integer id){}
    
    public Integer getId(){ return id; }
    
    public boolean getReviewed(){ return reviewed; }
    public void setReviewed(boolean _reviewed){
reviewed = _reviewed; }
    
    public java.sql.Date getDate(){ return date; }
    
    public java.sql.Time getTime(){ return time; }
    
    public String getTopic() { return topic; }
    public void setTopic(String _topic){  topic =
_topic; }
    
    public String getTitle(){ return title; }
    public void setTitle(String _title){ title =
_title; }
    
    public String getDepartment(){ return department;
}
    public void setDepartment(String _department){
department = _department; }
    
    public String getSummary(){ return summary; }
    public void setSummary(String _summary){ summary =
_summary; }
    
    public String getBody(){ return body; }
    public void setBody(String _body){ body = _body; }
    
    public String getName(){ return name; }
    public void setName(String _name){ name = _name; }
    
    public String getEmail(){ return email; }
    public void setEmail(String _email){ email =
_email; }
    
    public void setEntityContext(EntityContext ctx){
this.ctx = ctx; }
    
    public void unsetEntityContext() { ctx = null; }
    
    public void ejbActivate() {}
    public void ejbPassivate() {}
    public void ejbLoad() {}
    public void ejbStore() {}
    public void ejbRemove() {}
}

__________________________________________________
Do You Yahoo!?
Get personalized email addresses from Yahoo! Mail
http://personal.mail.yahoo.com/

_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to