Hi,

I had to create a finder method for a field that wasn't one of my entity
beans fields, in fact, it's a fk field managed by CMR.

No deployment errors occurs, but when I run my test cases I notice that
every ejbCreation (for this entity) fails with:

  17:31:04,169 ERROR [ForumMemberUsuario] Could not create entity
  java.sql.SQLException: ERROR:  Attribute 'memberid' specified more than
once

I built my relation based on this:
http://www.mail-archive.com/[EMAIL PROTECTED]/msg06437.html

Follows some code snippets:

/**
 * @ejb.bean name="ForumMemberUsuario"
 *      jndi-name="ForumMemberUsuarioBean"
 *      type="CMP"
 *  primkey-field="id"
 *  schema="ForumMemberUsuarioSchema" 
 *  cmp-version="2.x"
 * 
 * @ejb.persistence 
 *   table-name="BLOODMEMBROUSUARIOPORTAL" 
 * 
 * @ejb.finder 
 *    query="SELECT OBJECT(a) FROM ForumMemberUsuarioSchema as a WHERE
a.memberID = ?1"  
 *    signature="ForumMemberUsuarioLocal findByMemberID(java.lang.Integer
Id)"  
 *
 * @ejb.ejb-ref 
 *    ejb-name="ForumMember"
 *    view-type="local"
 *    ref-name="ejb/ForumMemberLocal"
 *
 * @ejb.ejb-ref 
 *    ejb-name="Administrador"
 *    view-type="local"
 *    ref-name="ejb/AdministradorLocal"
 *  
 * @ejb.ejb-ref 
 *    ejb-name="SequenceSession"
 *    view-type="local"
 *    ref-name="ejb/SequenceSessionLocal"
 *  
 **/
public abstract class ForumMemberUsuarioBean implements EntityBean
{

        // my ejbCreate don't do much - just obtain a sequence.nextval for
PK
        // so I'll omit the code.

        public void ejbPostCreate(ForumMember member)
                throws javax.ejb.CreateException
        {
                try
                {
                        ForumMemberLocal localForumMember =
        
ForumMemberUtil.getLocalHome().findByPrimaryKey(member.getId());

                        setForumMember(localForumMember);
                }
                catch (Exception e)
                {
                        StringWriter str = new StringWriter();
                        PrintWriter w = new PrintWriter(str);
                        e.printStackTrace(w);
                        w.close();

                        throw new
CreateException(str.getBuffer().toString());
                }
        }

        // Now follows the problem :-)

        /**
        * Returns the MemberID
        * @return the MemberID
        * 
        * @ejb.persistent-field 
        * @ejb.persistence
        *    column-name="MemberID"
        *     sql-type="LONG"
        * @ejb.interface-method
        */
        public abstract java.lang.Long getMemberID();

        /**
        * Sets the MemberID
        * 
        * @param java.lang.Long the new Id value
        * 
        * @ejb.interface-method
        */
        public abstract void setMemberID(java.lang.Long Id);

        /**
         * Returns the related ForumMember
         * 
         * @ejb.interface-method
         *
         * @ejb.relation
         *    name="ForumMember-ForumMemberUsuario"
         *    relation-name="ForumMember-cmp20-ForumMemberUsuario-cmp20"
         *    role-name="ForumMemberUsuario-cmp20-has-ForumMember-cmp20"
         *    target-ejb="ForumMember"
         *    target-role-name="ForumMemberUsuario-ForumMember"
         *
         * @jboss.relation-mapping style="foreign-key"
         *
         * @jboss.relation
         *    fk-constraint="true"
         *    fk-column="memberid"
         *    related-pk-field="id"
         */
        public abstract ForumMember getForumMember();

        /**
         * Sets the related ForumMember
         *
         * @param forumMember the related ForumMember
         *
         * @ejb.interface-method 
         *              view-type="local"
         */
        public abstract void setForumMember(ForumMemberLocal forumMember);
}


My test case fails in the create() method call:

ForumMemberUsuario memberUser = getForumMemberUsuarioHome().create(member);

If the get/setmemberid wasn't necessary to EJB QL, then its fixed, but I
didn't find out a better approach.


Any help will be great.


Regards,
hammett


-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive?  Does it
help you create better code?   SHARE THE LOVE, and help us help
YOU!  Click Here: http://sourceforge.net/donate/
_______________________________________________
xdoclet-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/xdoclet-user

Reply via email to