Hi Jake
Thanks for the suggestion. I gave it a try, and the resultant XML is:
<ejb-relation>
<ejb-relation-name>Event-Competition</ejb-relation-name>
<foreign-key-mapping/>
<ejb-relationship-role>
<ejb-relationship-role-name>Competition-has-a-Event</ejb-relationship-role-n
ame>
<fk-constraint>true</fk-constraint>
<key-fields>
<key-field>
<field-name></field-name>
<column-name></column-name>
</key-field>
</key-fields>
</ejb-relationship-role>
<ejb-relationship-role>
<ejb-relationship-role-name>Event-has-many-Competitions</ejb-relationship-ro
le-name>
<key-fields>
<key-field>
<field-name>id</field-name>
<column-name>event_fk</column-name>
</key-field>
</key-fields>
</ejb-relationship-role>
</ejb-relation>
Which in turn causes:
12:17:56,559 ERROR [EjbModule] Initialization failed
org.jboss.deployment.DeploymentException: Role: Competition-has-a-Event with
multiplicity many using foreign-key mapping is not allowed to have
key-fields
at
org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCRelationshipRoleMetaData.loadKey
Fields(JDBCRelationshipRoleMetaData.java:357)
Does anyone have any other suggestions or can reproduce this problem with
XDoclet CVS? Or do people recommend a new approach for developing with
XDoclet and JBoss CMR (eg manually create the tables with foreign key
constraints, use version 1.1.2 instead, write manual lookup code instead of
relying on RDBMS level foreign keys etc)? Any advice would be greatly
appreciated.
Thanks
Ben
----- Original Message -----
From: "Jake Thompson" <[EMAIL PROTECTED]>
To: "Ben Alex" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
Sent: Thursday, September 19, 2002 12:44 PM
Subject: RE: [Xdoclet-user] JBoss 3 with cmr fk-constraint - works with
1.1.2 but not CVS
At leas according to the last threads I remember reading, the
fk-constraint goes as so:
/**
* An Event has many Competitions
*
* @ejb:relation
* name="Event-Competition"
* role-name="Event-has-many-Competitions"
* @jboss:relation
* fk-constraint="true"
* @ejb:interface-method view-type="local"
*/
public abstract Set getCompetitions();
/**
* @ejb:interface-method view-type="local"
*/
public abstract void setCompetitions(Set competitions);
In CompetitionBean:
/**
* A Competition belongs to exactly one Event
*
* @ejb:relation
* name="Event-Competition"
* role-name="Competition-has-a-Event"
*
* @jboss:relation
* fk-column="event_fk"
* related-pk-field="id"
*
* @ejb:interface-method view-type="local"
*/
public abstract com.interfaces.EventLocal getEvent();
/**
* @ejb:interface-method view-type="local"
*/
public abstract void setEvent(com.interfaces.EventLocal event);
I do not know why it is coded like this, but have had a couple of
conversations and this seems to be what is "appropriate" as far as I
have tested it works fine. However, the fk-constraint is on the
opposite side of the relation than it was in 1.1.2 (Counter intuitive to
me?)
Later,
Jake
-----Original Message-----
From: Ben Alex [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, September 18, 2002 7:28 AM
To: [EMAIL PROTECTED]
Subject: [Xdoclet-user] JBoss 3 with cmr fk-constraint - works with
1.1.2 but not CVS
Hi
I am having a problem with <fk-constraint> appearing in the wrong
location
when using the current CVS. When using XDoclet 1.1.2, the same XDoclet
tags
work fine.
In EventBean:
/**
* An Event has many Competitions
*
* @ejb:relation
* name="Event-Competition"
* role-name="Event-has-many-Competitions"
* @ejb:interface-method view-type="local"
*/
public abstract Set getCompetitions();
/**
* @ejb:interface-method view-type="local"
*/
public abstract void setCompetitions(Set competitions);
In CompetitionBean:
/**
* A Competition belongs to exactly one Event
*
* @ejb:relation
* name="Event-Competition"
* role-name="Competition-has-a-Event"
*
* @jboss:relation
* fk-column="event_fk"
* related-pk-field="id"
* fk-constraint="true"
*
* @ejb:interface-method view-type="local"
*/
public abstract com.interfaces.EventLocal getEvent();
/**
* @ejb:interface-method view-type="local"
*/
public abstract void setEvent(com.interfaces.EventLocal event);
With XDoclet 1.1.2, the output is:
<ejb-relation>
<ejb-relation-name>Event-Competition</ejb-relation-name>
<foreign-key-mapping/>
<ejb-relationship-role>
<ejb-relationship-role-name>Event-has-many-Competitions</ejb-relationshi
p-ro
le-name>
<key-fields>
<key-field>
<field-name>id</field-name>
<column-name>event_fk</column-name>
</key-field>
</key-fields>
</ejb-relationship-role>
<ejb-relationship-role>
<ejb-relationship-role-name>Competition-has-a-Event</ejb-relationship-ro
le-n
ame>
<fk-constraint>true</fk-constraint>
<key-fields/>
</ejb-relationship-role>
</ejb-relation>
With XDoclet from today's CVS, the output is:
<ejb-relation-name>Event-Competition</ejb-relation-name>
<foreign-key-mapping/>
<ejb-relationship-role>
<ejb-relationship-role-name>Competition-has-a-Event</ejb-relationship-ro
le-n
ame>
<key-fields/>
</ejb-relationship-role>
<ejb-relationship-role>
<ejb-relationship-role-name>Event-has-many-Competitions</ejb-relationshi
p-ro
le-name>
<fk-constraint>true</fk-constraint>
<key-fields>
<key-field>
<field-name>id</field-name>
<column-name>event_fk</column-name>
</key-field>
</key-fields>
</ejb-relationship-role>
</ejb-relation>
<ejb-relation>
The XDoclet 1.1.2 output works correctly in that JBoss (built from CVS a
few
days ago) creates the foreign key against the database table. Also, if I
use
the XDoclet CVS output and move the <fk-constraint>true</fk-constraint>
from
the Event-has-many-Competitions relationship role to the
Competitions-has-a-Event relationship, JBoss also creates the foreign
key
correctly. But it doesn't work with the untouched output from XDoclet
CVS.
I've tried many different tags (including jboss:target-relation) and
read as
many posts as I could find on this subject, but to no avail. Any
suggestions
would be greatly appreciated.
Thanks
Ben
-------------------------------------------------------
This SF.NET email is sponsored by: AMD - Your access to the experts
on Hammer Technology! Open Source & Linux Developers, register now
for the AMD Developer Symposium. Code: EX8664
http://www.developwithamd.com/developerlab
_______________________________________________
Xdoclet-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/xdoclet-user
-------------------------------------------------------
This SF.NET email is sponsored by: AMD - Your access to the experts
on Hammer Technology! Open Source & Linux Developers, register now
for the AMD Developer Symposium. Code: EX8664
http://www.developwithamd.com/developerlab
_______________________________________________
Xdoclet-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/xdoclet-user
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Xdoclet-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/xdoclet-user