Hi all!
I've just started using Castor, but I've stumbled into a challenge wrt
the mapping file that I can't figure out to solve.
The Topic class has an attribute called subject that is an instance
implementing the LocatorIF interface. The TM_TOPIC table to which the
Topic class maps has two columns containing the LocatorIF data
(subject_notation and subject_address).
>From reading the documentation I see that nested attibutes can be
used. The problem is that it seems to me like Castor uses introspection
it figure out the type of the subject attribute. In this case it is an
interface, not a concrete type.
My question is how can it figure out that it is to instantiate an object
of the SubjectLocator class? Can this be specified somewhere? Or are
there another technique I can use to map this object?
(I've used TopLink earlier and the subject attribute was then mapped to
an aggregate object.)
All the best,
Geir O.
PS. Note that the Topic.getSubject method should return null if the
subject locator isn't specified, so I cannot cheat by having it return
an empty subject locator of the correct type.
-------------------------------------------------------------------
Classes:
public class Topic {
protected LocatorIF subject;
public LocatorIF getSubject();
public void setSubject(LocatorIF);
...
}
public class SubjectLocator implements LocatorIF {
protected String notation;
protected String address;
public String getNotation();
public String getAddress();
}
-------------------------------------------------------------------
Database schema:
create table TM_TOPIC (
id int not null,
subject_notation varchar(12),
subject_address varchar(255),
...
);
-------------------------------------------------------------------
Castor mapping:
<class name="Topic" identity="id">
<map-to table="TM_TOPIC"/>
<field name="id" type="integer" >
<sql name="id" type="integer"/>
</field>
<!-- SubjectLocator -->
<field name="subject.notation">
<sql name="subject_notation"/>
</field>
<field name="subject.address">
<sql name="subject_address"/>
</field>
...
</class>
-----------------------------------------------------------
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev