I will give you an example of an 1 - N relation using XDoclet tags.
Using this code you can easisly figure out what to put in your code:
Advertisement --1--------------------N-- Correction
AdvertisementBean.java:
/**
* @ejb.interface-method
* @ejb.relation
* name = "Advertisement-Correction"
* role-name = "AdvertisementHasCorrections"
* cascade-delete = "no"
* @ejb.value-object
* aggregate =
"nl.informatiefabriek.om.correction.value.CorrectionValue"
* aggregate-name = "AllCorrection"
* members =
"nl.informatiefabriek.om.correction.interfaces.CorrectionLocal"
* members-name = "Corrections"
* relation = "external"
* type = "Collection"
* @jboss.relation-mapping style="foreign-key"
*/
public abstract Collection getCorrections();
CorrectionBean.java:
/**
* @ejb.interface-method
* @ejb.relation
* name = "Advertisement-Correction"
* role-name = "CorrectionBelongsToAdvertisement"
* cascade-delete = "yes"
* @jboss.relation-mapping style = "foreign-key"
* @jboss.relation
* fk-column="advertisement_fk"
* related-pk-field="advertisementId"
*/
public abstract AdvertisementLocal getAdvertisement();
If you don't need relationships between value objects you can just leave
out he @ejb.value-object tags.
Regards,
Harm de Laat
Informatiefabriek
The Netherlands
Pedro Salazar <[EMAIL PROTECTED]>
Sent by: [EMAIL PROTECTED]
11/06/2003 11:08 AM
Please respond to
[EMAIL PROTECTED]
To
[EMAIL PROTECTED]
cc
Subject
[JBoss-user] relate 2 entities without a common key (WAS Re: [JBoss-user]
relationship 1-* with foreign key)
Greetings,
-I have 2 entities mapped from 2 database tables, ACCESS_PERMISSION and
ACCESS_SCHEDULE.
-the "relation" between them is, ACCESS_PERMISSION *has* several
ACCESS_SCHEDULE, and a 1-N
-*they don't share a common key*
ACCESS_PERMISSION
-----------------
SID_ID
SERVICE_ID
A1
A2
...
CONSTRAINS: UNIQUE (SID_ID,SERVICE_ID)
ACCESS_SCHEDULE
---------------
SID_ID
SERVICE_ID
TIME_ACCESS_START
B1
B2
CONSTRAINTS: UNIQUE(SID_ID,SERVICE_ID,TIME_ACCESS_START)
Can I define a relationship between them?
I tried to use a relation just with 2 attributes of table
ACCESS_SCHEDULE and not using the 3rd one (TIME_ACCESS_START) but JBOSS
shows me that error:
"
[ObjectName: jboss.j2ee:jndiName=ejb/AccessScheduleLocal,service=EJB
state: FAILED
I Depend On:
Depends On Me: org.jboss.deployment.DeploymentException: Mappings were
not provided for all fields: unmaped fields=[timeAccessStart] in
role=schedules_BELONG_TO_access_permission, ObjectName:
jboss.j2ee:jndiName=ejb/AccessPermissionLocal,service=EJB
state: FAILED
I Depend On:
Depends On Me: org.jboss.deployment.DeploymentException: Mappings were
not provided for all fields: unmaped fields=[timeAccessStart] in
role=schedules_BELONG_TO_access_permission]
"
Can I do this in another way? What is normal to do, a "findByXX()"
method in ACCESS_SCHEDULE and a interface method on ACCESS_PERMISSION?
But in that case, there must exist some programatic code and I don't
know how can I synchronize access to that methods?
To complete, I put in below also the xdoclet code of my relationship:
"
/**
* @ejb.relation
* name="access_permission_TO__access_schedule"
* role-name="access_permission_HAS_schedules"
* cascade-delete="no"
* target-ejb="AccessSchedule"
* target-role-name="schedules_BELONG_TO_access_permission"
* target-cascade-delete="yes"
* @ejb.interface-method
* view-type="local"
* @ejb.transaction
* type="Supports"
* @jboss.relation
* related-pk-field="sidId"
* fk-column="sidId"
* @jboss.relation
* related-pk-field="primitiveId"
* fk-column="primitiveId"
* @jboss.target-relation
* related-pk-field="sidId"
* fk-column="sidId"
* @jboss.target-relation
* related-pk-field="primitiveId"
* fk-column="primitiveId"
* @jboss.relation-mapping
* style="relation-table"
* @jboss.relation-table
* table-name="uif_access_permission"
*/
public abstract java.util.Collection getSchedules();
"
regards,
Pedro Salazar
--
-PS
-------------------------------------------------------
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/
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user
-------------------------------------------------------
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/
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user