I followed your advise and added some more details. I thinks it's now really a useful example.
See here: http://cvs.apache.org/viewcvs/db-ojb/xdocs/faq.xml?rev=HEAD&content-type=text/vnd.viewcvs-markup
anything missing ?
thanks, Thomas
Charles Anthony wrote:
Hi,
If you think it's useful, feel free.
As Phil has pointed out, the field-descriptors should be marked as PKs. If you want to flesh it out a little (maybe chuck in the projects class descriptor, or at the least the collection-descriptor), or change it any way - be my guest.
Cheers,
Charles.
-----Original Message----- From: Thomas Mahler [mailto:[EMAIL PROTECTED] Sent: 04 March 2003 19:26 To: OJB Users List Subject: Re: Ternary associations
Hi Charles,
thanks for the good explanation and sample (pseudo-) code.
I believed I had to write a testcase with an example, but I thinks it's not longer required as your sample gives the whole picture.
thanks for saving my evening! Thomas
PS: If you don't mind I'll place this into our FAQ.
Charles Anthony wrote:
Hi,
OK, I think I understand what you want.
Why is this a "special" scenario ?
You can (and we have in our app) defined a class that represents the
relationship. We have mapped that to a table with the
corresponding ids. We
can then do queries/updates on that relationship as with any other.
Here's an example : it's worked entirely in the email and is
probably too
brief, so it doesn't compile and probably has errors.
However, it should
illustrate that it is possible with OJB.
java class :
public class ProjectRelationship {
Integer developerId;
Integer languageId;
Integer projectId;
Developer developer; Language lanuage;
Project project;
/** Normal setters and getters **/
}
extract from the repository :
<class-descriptor class="ProjectRelationship"
table="PROJECTRELATIONSHIP">
<field-descriptor id="1" name="developerId" column="DEVELOPER_ID" jdbc-type="INTEGER" /> <field-descriptor id="2" name="languageId" column="LANGUAGE_ID" jdbc-type="INTEGER" /> <field-descriptor id="3" name="projectId" column="PROJECT_ID" jdbc-type="INTEGER" /> <reference-descriptor name="developer" class-ref="Developer"> <foreignkey field-id-ref="1" /> </reference-descriptor> <reference-descriptor name="language" class-ref="Language"> <foreignkey field-id-ref="2" /> </reference-descriptor> <reference-descriptor name="project" class-ref="Project"> <foreignkey field-id-ref="3" /> </reference-descriptor> </class-descriptor>
storing a relationship :
Developer d = .... (create or retrieve); Project p = .... (create or retrieve); Language l = .... (create or retrieve); ProjectRelationship r = new ProjectRelationship(); r.setDeveloper(dev); r.setLanguage(l); r.setProject(p);
Broker.store(r);
querying for all relationships that developer 'bob' has in 'java' : Criteria criteria = new Criteria(); criteria.addEqualTo("developer.name","bob"); cirteria.addEquatTo("language.name","java");
Query q = new QueryByCriteria(ProjectRelationship.class,
criteria, true);
Collection relationships = Broker.getCollectionByQuery(q);
You can then iterate through the relationships to get the projects.
You could also have on the Project class-descriptor a
<collection-descriptor> that returns all relationships
associated with the
Project. If it was call "projectRelationships" the following
would give you
all projects that have a relationship with "bob" and the
language "java".
association (aCriteria criteria = new Criteria(); criteria.addEqualTo("projectRelationships.developer.name","bob"); cirteria.addEquatTo("projectRelationships.language.name","java");
Query q = new QueryByCriteria(Project.class, criteria, true); Collection projects = Broker.getCollectionByQuery(q);
Hope that helps ,
Cheers,
Charles.
-----Original Message----- From: O'Reilly John [mailto:[EMAIL PROTECTED] Sent: 04 March 2003 16:22 To: 'OJB Users List' Subject: RE: Ternary associations
Hi,
With a ternary relationship there are three (or more) objects 'related' to
each other. An example would be 'developer', 'language', 'project'. You
want to represent the combinations of these that exist. It's realised by a
bridge table with 3 columns representing the foreign keys in the other 3
tables (just like an m:n association is represented by a table with 2
columns).
The following explains how hibernate supports ternary associations. http://www.xylax.net/hibernate/ternary.html
Regards, John
-----Original Message----- From: Charles Anthony [mailto:[EMAIL PROTECTED] Sent: 04 March 2003 16:08 To: 'OJB Users List' Subject: RE: Ternary associations
I didn't know exactly what a Ternary association is. A quick google suggests that it is what OJB calls an M:N
are not theresolution for a many-many relationship).
If it is one of them, then yes, OJB does support it.
See http://db.apache.org/ojb/tutorial3.html#mapping%20m:n%20associations
Cheers,
Charles.
-----Original Message----- From: O'Reilly John [mailto:[EMAIL PROTECTED] Sent: 04 March 2003 15:58 To: 'OJB Users List' Subject: RE: Ternary associations
Hi,
Sorry to repost the following question but can someone give
me a yes/no
answer on this. If no, then we need to look for another way of doing this.
Thanks, John
-----Original Message----- From: O'Reilly John [mailto:[EMAIL PROTECTED] Sent: 26 February 2003 16:59 To: 'OJB Users List' Subject: Ternary associations
Hi,
According to the following, OJB is supposed to support ternary associations:
http://c2.com/cgi-bin/wiki?ObjectRelationalToolComparison
I can't find any info on this. Is it actually supported?
Thanks,
John
***************************************************************
*********
This e-mail and any files transmitted with it are confidential and may be
privileged and are intended solely for the individual named/ for the use of
the individual or entity to whom they are addressed.If you
are not theintended addressee, you should not disseminate, distribute or
copy this
e-mail.Please notify the sender immediately if you have received this e-mail
by mistake and delete this e-mail from your system.If you
viruses.Thisintended recipient, you are notified that reviewing, disclosing, copying,
distributing or taking any action in reliance on the contents of this e-mail
is strictly prohibited.Please note that any views or opinions expressed in
this e-mail are solely those of the author and do not necessarily represent
those of Traventec Limited.E-mail transmission cannot be guaranteed to be
secure or error-free as information could be intercepted, corrupted, lost,
destroyed, or arrive late or incomplete.Traventec Limited therefore does not
accept liability for any errors or omissions in the contents of this
message, which arise as a result of e-mail transmission.The recipient should
check this e-mail and any attachments for the presence of
---------e-mail has been swept for computer viruses however Traventec Limited accepts
no liability for any damage caused by any virus transmitted by this e-mail.
------------------------------------------------------------
are not theTo unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
***************************************************************
*********
This e-mail and any files transmitted with it are confidential and may be
privileged and are intended solely for the individual named/ for the use of
the individual or entity to whom they are addressed.If you
are not theintended addressee, you should not disseminate, distribute or
copy this
e-mail.Please notify the sender immediately if you have received this e-mail
by mistake and delete this e-mail from your system.If you
viruses.Thisintended recipient, you are notified that reviewing, disclosing, copying,
distributing or taking any action in reliance on the contents of this e-mail
is strictly prohibited.Please note that any views or opinions expressed in
this e-mail are solely those of the author and do not necessarily represent
those of Traventec Limited.E-mail transmission cannot be guaranteed to be
secure or error-free as information could be intercepted, corrupted, lost,
destroyed, or arrive late or incomplete.Traventec Limited therefore does not
accept liability for any errors or omissions in the contents of this
message, which arise as a result of e-mail transmission.The recipient should
check this e-mail and any attachments for the presence of
---------e-mail has been swept for computer viruses however Traventec Limited accepts
no liability for any damage caused by any virus transmitted by this e-mail.
------------------------------------------------------------
are not theTo unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
This email and any attachments are strictly confidential and are intended
solely for the addressee. If you are not the intended recipient you must
not disclose, forward, copy or take any action in reliance on this message
or its attachments. If you have received this email in error please notify
the sender as soon as possible and delete it from your computer systems.
Any views or opinions presented are solely those of the author and do not
necessarily reflect those of HPD Software Limited or its affiliates.
At present the integrity of email across the internet cannot be guaranteed
and messages sent via this medium are potentially at risk. All liability
is excluded to the extent permitted by law for any claims arising as a re-
sult of the use of this medium to transmit information by or to HPD Software Limited or its affiliates.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
***************************************************************
*********
This e-mail and any files transmitted with it are confidential and may be
privileged and are intended solely for the individual named/ for the use of
the individual or entity to whom they are addressed.If you
or copy thisintended addressee, you should not disseminate, distribute
viruses.Thise-mail.Please notify the sender immediately if you have received this e-mail
by mistake and delete this e-mail from your system.If you are not the
intended recipient, you are notified that reviewing, disclosing, copying,
distributing or taking any action in reliance on the contents of this e-mail
is strictly prohibited.Please note that any views or opinions expressed in
this e-mail are solely those of the author and do not necessarily represent
those of Traventec Limited.E-mail transmission cannot be guaranteed to be
secure or error-free as information could be intercepted, corrupted, lost,
destroyed, or arrive late or incomplete.Traventec Limited therefore does not
accept liability for any errors or omissions in the contents of this
message, which arise as a result of e-mail transmission.The recipient should
check this e-mail and any attachments for the presence of
e-mail has been swept for computer viruses however Traventec Limited accepts
no liability for any damage caused by any virus transmitted by this e-mail.
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
This email and any attachments are strictly confidential and
are intended
solely for the addressee. If you are not the intended
recipient you must
not disclose, forward, copy or take any action in reliance
on this message
or its attachments. If you have received this email in error
please notify
the sender as soon as possible and delete it from your
computer systems.
Any views or opinions presented are solely those of the
author and do not
necessarily reflect those of HPD Software Limited or its affiliates.
At present the integrity of email across the internet
cannot be guaranteed
and messages sent via this medium are potentially at risk.
All liability
is excluded to the extent permitted by law for any claims
arising as a re-
sult of the use of this medium to transmit information by or to HPD Software Limited or its affiliates.
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
This email and any attachments are strictly confidential and are intended solely for the addressee. If you are not the intended recipient you must not disclose, forward, copy or take any action in reliance on this message or its attachments. If you have received this email in error please notify the sender as soon as possible and delete it from your computer systems. Any views or opinions presented are solely those of the author and do not necessarily reflect those of HPD Software Limited or its affiliates.
At present the integrity of email across the internet cannot be guaranteed
and messages sent via this medium are potentially at risk. All liability
is excluded to the extent permitted by law for any claims arising as a re-
sult of the use of this medium to transmit information by or to HPD Software Limited or its affiliates.
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
