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