Here are the relevant class:

  | package org.kart.ejb.impl;
  | 
  | import org.kart.util.GUID;
  | import org.kart.ejb.AgentPK;
  | import org.kart.common.ejb.User;
  | import java.rmi.RemoteException;
  | import java.util.Collection;
  | 
  | import javax.ejb.CreateException;
  | import javax.ejb.EntityBean;
  | import javax.ejb.EntityContext;
  | import javax.ejb.RemoveException;
  | 
  | /**
  |  * 
  |  * This is the bean representing an Agent.
  |  * 
  |  *   @ejb.bean 
  |  *      cmp-version="2.x" 
  |  *      local-jndi-name="KART/Agent" 
  |  *      name="Agent" 
  |  *      type="CMP" 
  |  *      view-type="local" 
  |  * 
  |  *   @ejb.persistence 
  |  *      table-name="Agents"
  |  *
  |  *   @ejb:finder 
  |  *      signature="java.util.Collection findByUser(java.lang.String userId)" 
  |  *      unchecked="true"
  |  *      query="SELECT DISTINCT OBJECT (agent) FROM Agent agent WHERE 
agent.userId=?1"
  |  *  
  |  *   @ejb:finder 
  |  *      signature="com.parker.ejb.Agent findByName(java.lang.String userId, 
java.lang.String agentName)" 
  |  *      unchecked="true"
  |  *      query="SELECT DISTINCT OBJECT (agent) FROM Agent agent WHERE 
agent.userId=?1 and agent.name=?2"
  |  * 
  |  *   @ejb.finder 
  |  *      signature="java.util.Collection findAll()" 
  |  *      unchecked="true"
  |  *      query="SELECT DISTINCT OBJECT (agent) FROM Agent agent"                  
  |  * 
  |  *   @ejb.interface 
  |  *      local-extends="javax.ejb.EJBLocalObject"
  |  * 
  |  *   @ejb.transaction
  |  *      type="Required"
  |  *
  |  *   @ejb.ejb-ref
  |  *      ejb-name="SearchEngine"
  |  *      view-type="local"
  |  *      ref-name="ejb/SearchEngineLocal"
  |  *
  |  *   JBoss/JAWS CMP specific 
  |  *   @jboss:container-configuration name="Standard CMP 2.x EntityBean"
  |  *   @jboss:table-name Agents
  |  *   @jboss:create-table true
  |  *   @jboss:remove-table false
  |  *   @jboss:tuned-updates true
  |  *   @jboss:read-only false
  |  * 
  |  * @author map
  |  * @version 1.0
  |  * 
  |  */
  | public abstract class AgentBean implements EntityBean {
  | 
  |     EntityContext ctx = null;
  |     
  |             //EJB Callbacks
  |     public void ejbActivate() throws RemoteException {}     
  |     public void ejbRemove() throws RemoteException, RemoveException {}
  |     public void ejbPassivate() throws RemoteException {}    
  |     public void ejbLoad() throws RemoteException {} 
  |     public void ejbStore() throws RemoteException {}        
  |     public void setEntityContext( EntityContext ctx ) throws RemoteException { 
this.ctx = ctx; }    
  |     public void unsetEntityContext() throws RemoteException {       ctx = null; }  
 
  | 
  |     /**
  |      * @ejb.create-method
  |      */
  |     public AgentPK ejbCreate( User user ) throws CreateException {
  |         setId( GUID.newString() );
  |         setUserId( user.getId() );
  |         return null;   
  |     }
  |     
  |     public void ejbPostCreate( User user ){
  |         
  |     }
  |     
  |     /**
  |      * @ejb.persistence column-name="id" 
  |      * @ejb.interface-method 
  |      * @ejb.pk-field 
  |      */
  |     public abstract String getId();
  |     
  |     public abstract void setId(String id);
  | 
  |     /**
  |      * @ejb.persistence column-name="name"
  |      * @ejb.interface-method
  |      */
  |     public abstract String getName();
  |     
  |     /**
  |      * @ejb.interface-method     
  |      */
  |     public abstract void setName( String name );
  |     
  |     /**
  |      * @ejb.persistence column-name="description"
  |      * @ejb.interface-method
  |      */
  |     public abstract String getDescription();
  |     
  |     /**
  |      * @ejb.interface-method     
  |      */
  |     public abstract void setDescription( String description );
  |     
  |     /**
  |      * @ejb.persistence column-name="query"
  |      * @ejb.interface-method
  |      */
  |     public abstract String getQuery();
  |     
  |     /**
  |      * @ejb.interface-method     
  |      */
  |     public abstract void setQuery( String query );
  |     
  |     /**
  |      * @ejb.persistence column-name="levels_deep"
  |      * @ejb.interface-method
  |      */
  |     public abstract int getLevelsDeep();
  |     
  |     /**
  |      * @ejb.interface-method     
  |      */
  |     public abstract void setLevelsDeep( int levelsDeep );   
  |     
  |     /**
  |      * @ejb.persistence column-name="user_id"
  |      * @ejb.interface-method
  |      */
  |     public abstract String getUserId();
  |     
  |     /**
  |      * @ejb.interface-method     
  |      */
  |     public abstract void setUserId( String id );
  |     
  |                             
  |     /**
  |      * @ejb.interface-method
  |      * 
  |      * @ejb.relation 
  |      *    name="agent-search-engine"
  |      *    role-name="agent-has-search-engine"
  |      *    target-ejb="SearchEngine"
  |      * 
  |      * @jboss.relation
  |      *    related-pk-field="id"
  |      *    fk-column="agent_id"
  |      * 
  |      * @jboss.relation-mapping 
  |      *    style="relation-mapping"
  |      * 
  |      * @jboss.relation-table 
  |      *    table-name="agent_search_engines"
  |      *    create-table="false"
  |      */                     
  |     public abstract Collection getSearchEngines();
  |     /**
  |              * @ejb.interface-method     
  |              */                     
  |     public abstract void setSearchEngines( Collection searchEngines );
  | }
  | 
  | 



  | package org.kart.ejb.impl;
  | 
  | import org.kart.util.GUID;
  | import org.kart.ejb.SearchEnginePK;
  | 
  | import java.rmi.RemoteException;
  | import java.util.Collection;
  | 
  | import javax.ejb.CreateException;
  | import javax.ejb.EntityBean;
  | import javax.ejb.EntityContext;
  | import javax.ejb.RemoveException;
  | 
  | /**
  |  * 
  |  * This is the bean representing an Search Engine.
  |  * 
  |  *   @ejb.bean 
  |  *      cmp-version="2.x" 
  |  *      local-jndi-name="KART/SearchEngine" 
  |  *      name="SearchEngine" 
  |  *      type="CMP" 
  |  *      view-type="local" 
  |  * 
  |  *   @ejb.persistence 
  |  *      table-name="search_engines"
  |  *
  |  *   @ejb.finder 
  |  *      signature="java.util.Collection findAll()" 
  |  *      unchecked="true"
  |  *      query="SELECT DISTINCT OBJECT (searchengine) FROM SearchEngine 
searchengine"                  
  |  * 
  |  *   @ejb:finder 
  |  *      signature="com.parker.ejb.SearchEngine findByName(java.lang.String name)" 
  |  *      unchecked="true"
  |  *      query="SELECT DISTINCT OBJECT (searchengine) FROM SearchEngine 
searchengine WHERE searchengine.name=?1"
  |  * 
  |  *   @ejb.interface 
  |  *      local-extends="javax.ejb.EJBLocalObject"
  |  * 
  |  *   @ejb.transaction
  |  *      type="Required"
  |  * 
  |  *   @ejb.ejb-ref
  |  *      ejb-name="Agent"
  |  *      view-type="local"
  |  *      ref-name="ejb/AgentLocal"
  |  * 
  |  *   JBoss/JAWS CMP specific 
  |  *   @jboss.container-configuration name="Standard CMP 2.x EntityBean"
  |  *   @jboss.table-name search_engines
  |  *   @jboss.create-table true
  |  *   @jboss.remove-table false
  |  *   @jboss.tuned-updates true
  |  *   @jboss.read-only false
  |  * 
  |  * @author map
  |  * @version 1.0
  |  * 
  |  */
  | public abstract class SearchEngineBean implements EntityBean {
  | 
  |     EntityContext ctx = null;
  |     
  |             //EJB Callbacks
  |     public void ejbActivate() throws RemoteException {}     
  |     public void ejbRemove() throws RemoteException, RemoveException {}
  |     public void ejbPassivate() throws RemoteException {}    
  |     public void ejbLoad() throws RemoteException {} 
  |     public void ejbStore() throws RemoteException {}        
  |     public void setEntityContext( EntityContext ctx ) throws RemoteException { 
this.ctx = ctx; }    
  |     public void unsetEntityContext() throws RemoteException {       ctx = null; }  
 
  | 
  |     /**
  |      * @ejb.create-method
  |      */
  |     public SearchEnginePK ejbCreate() throws CreateException {
  |         setId( GUID.newString() );       
  |         return null;   
  |     }
  |     
  |     public void ejbPostCreate(){
  |         
  |     }
  |     
  |     /**
  |      * @ejb.persistence column-name="id" 
  |      * @ejb.interface-method 
  |      * @ejb.pk-field 
  |      */
  |     public abstract String getId();
  |     
  |     public abstract void setId(String id);
  | 
  |     /**
  |      * @ejb.persistence column-name="name"
  |      * @ejb.interface-method
  |      */
  |     public abstract String getName();
  |     
  |     /**
  |      * @ejb.interface-method     
  |      */
  |     public abstract void setName( String name );
  |     
  |     /**
  |      * @ejb.persistence column-name="description"
  |      * @ejb.interface-method
  |      */
  |     public abstract String getDescription();
  |     
  |     /**
  |      * @ejb.interface-method     
  |      */
  |     public abstract void setDescription( String description );
  |     
  |     /**
  |      * @ejb.persistence column-name="hidden_parameters"
  |      * @ejb.interface-method
  |      */
  |     public abstract String getHiddenParameters();
  |     
  |     /**
  |      * @ejb.interface-method     
  |      */
  |     public abstract void setHiddenParameters( String hiddenParameters );
  |     
  |     /**
  |      * @ejb.persistence column-name="query_variable"
  |      * @ejb.interface-method
  |      */
  |     public abstract String getQueryVariable();
  |     
  |     /**
  |      * @ejb.interface-method     
  |      */
  |     public abstract void setQueryVariable( String queryVariable );  
  |     
  |     /**
  |      * @ejb.persistence column-name="url"
  |      * @ejb.interface-method
  |      */
  |     public abstract String getUrl();
  |     
  |     /**
  |      * @ejb.interface-method     
  |      */
  |     public abstract void setUrl( String url );
  |             
  | 
  |     /**
  |      * @ejb.interface-method
  |      * 
  |      * @ejb.relation 
  |      *    name="agent-search-engine"
  |      *    role-name="search-engine-has-agent"
  |      *    target-ejb="Agent"
  |      * 
  |      * @jboss.relation
  |      *    related-pk-field="id"
  |      *    fk-column="search_engine_id"
  |      * 
  |      * @jboss.relation-table 
  |      *    table-name="agent_search_engines"
  |      *    create-table="false"
  |      *
  |      * @jboss.relation-mapping 
  |      *    style="relation-mapping"            
  |      */             
  |     public abstract Collection getAgents();
  |     public abstract void setAgents( Collection agents );            
  | }
  | 
=============================================
=============================================

And the generated xml descriptor (jbosscmp-jdbc) concerning the relationships.


  | <?xml version="1.0" encoding="UTF-8"?>
  | <!DOCTYPE jbosscmp-jdbc PUBLIC "-//JBoss//DTD JBOSSCMP-JDBC 3.2//EN" 
"http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_3_2.dtd";>
  | 
  | <jbosscmp-jdbc>
  |    <defaults>
  |      <datasource>java:/KartDS</datasource>
  |      <datasource-mapping>MS SQLSERVER2000</datasource-mapping>
  |      <preferred-relation-mapping>foreign-key</preferred-relation-mapping>
  |    </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>User</ejb-name>
  |          <create-table>true</create-table>
  |          <remove-table>false</remove-table>
  |          <read-only>false</read-only>
  |          <table-name>Users</table-name>
  | 
  |          <cmp-field>
  |             <field-name>id</field-name>
  |             <column-name>id</column-name>
  | 
  |         </cmp-field>
  |          <cmp-field>
  |             <field-name>isAdmin</field-name>
  |             <column-name>admin</column-name>
  | 
  |         </cmp-field>
  |          <cmp-field>
  |             <field-name>password</field-name>
  |             <column-name>password</column-name>
  | 
  |         </cmp-field>
  |          <cmp-field>
  |             <field-name>username</field-name>
  |             <column-name>user_name</column-name>
  | 
  |         </cmp-field>
  |          <cmp-field>
  |             <field-name>firstName</field-name>
  |             <column-name>first_name</column-name>
  | 
  |         </cmp-field>
  |          <cmp-field>
  |             <field-name>lastName</field-name>
  |             <column-name>last_name</column-name>
  | 
  |         </cmp-field>
  | 
  | <!-- jboss 3.2 features -->
  | <!-- optimistic locking does not express the exclusions needed -->
  |       </entity>
  | 
  |       <entity>
  |          <ejb-name>Agent</ejb-name>
  |          <create-table>true</create-table>
  |          <remove-table>false</remove-table>
  |          <read-only>false</read-only>
  |          <table-name>Agents</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>description</field-name>
  |             <column-name>description</column-name>
  | 
  |         </cmp-field>
  |          <cmp-field>
  |             <field-name>query</field-name>
  |             <column-name>query</column-name>
  | 
  |         </cmp-field>
  |          <cmp-field>
  |             <field-name>levelsDeep</field-name>
  |             <column-name>levels_deep</column-name>
  | 
  |         </cmp-field>
  |          <cmp-field>
  |             <field-name>userId</field-name>
  |             <column-name>user_id</column-name>
  | 
  |         </cmp-field>
  | 
  | <!-- jboss 3.2 features -->
  | <!-- optimistic locking does not express the exclusions needed -->
  |       </entity>
  | 
  |       <entity>
  |          <ejb-name>SearchEngine</ejb-name>
  |          <create-table>true</create-table>
  |          <remove-table>false</remove-table>
  |          <read-only>false</read-only>
  |          <table-name>search_engines</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>description</field-name>
  |             <column-name>description</column-name>
  | 
  |         </cmp-field>
  |          <cmp-field>
  |             <field-name>hiddenParameters</field-name>
  |             <column-name>hidden_parameters</column-name>
  | 
  |         </cmp-field>
  |          <cmp-field>
  |             <field-name>queryVariable</field-name>
  |             <column-name>query_variable</column-name>
  | 
  |         </cmp-field>
  |          <cmp-field>
  |             <field-name>url</field-name>
  |             <column-name>url</column-name>
  | 
  |         </cmp-field>
  | 
  | <!-- jboss 3.2 features -->
  | <!-- optimistic locking does not express the exclusions needed -->
  |       </entity>
  | 
  |    </enterprise-beans>
  | 
  |   <relationships>
  |     <ejb-relation>
  |       <ejb-relation-name>agent-search-engine</ejb-relation-name>
  |       <relation-table-mapping>
  |         <table-name>agent_search_engines</table-name>
  |           <create-table>false</create-table>
  |       </relation-table-mapping>
  | 
  |       <ejb-relationship-role>
  |           
<ejb-relationship-role-name>agent-has-search-engine</ejb-relationship-role-name>
  |           <key-fields>
  |              <key-field>
  |                <field-name>id</field-name>
  |                <column-name>search_engine_id</column-name>
  |              </key-field>
  |           </key-fields>
  | 
  |       </ejb-relationship-role>
  |       <ejb-relationship-role>
  |           
<ejb-relationship-role-name>search-engine-has-agent</ejb-relationship-role-name>
  |           <key-fields>
  |              <key-field>
  |                <field-name>id</field-name>
  |                <column-name>agent_id</column-name>
  |              </key-field>
  |           </key-fields>
  | 
  |       </ejb-relationship-role>
  |     </ejb-relation>
  |   </relationships>
  | 
  | </jbosscmp-jdbc>
  | 

View the original post : 
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3841214#3841214

Reply to the post : 
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3841214


-------------------------------------------------------
This SF.Net email sponsored by Black Hat Briefings & Training.
Attend Black Hat Briefings & Training, Las Vegas July 24-29 - 
digital self defense, top technical experts, no vendor pitches, 
unmatched networking opportunities. Visit www.blackhat.com
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to