Why not to introspect the classes at runtime (or to add a parameter to
configure it) ?
Thank you.
Jeff Butler escribió:
iBATIS introspects classes at initialization time. You've configured
iBATIS to think that the Relationship class has a comment property
- which it doesn't.
If you want to have iBATIS introspect with every statement, then you
can use a Map instead of a JavaBean.
You could also add abstract getComment, setComment methods to your
Relationship class.
Jeff Butler
On 10/9/06, *Guido García Bernardo* <[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>> wrote:
Imagine the following abstract class:
public abstract class Relationship {
private String dateRelation;
private Integer idUser;
// getters & setters
}
That allows to define several kinds of relations, i.e:
public class Friendship extends Relationship {
private String comment;
// getters & setters
}
The SQL map:
<sqlMap>
<typeAlias alias="relation" type="my.package.Relationship" />
<insert id="insertFriend" parameterClass="relation">
insert into FRIENDS ( id_user, date_relation, comment )
values ( #idUser#, #dateRelation#, #comment# )
</insert>
</sqlMap>
And my ibatis code throws a message error "There is not readable
property 'comment' in my.package.Relationship".
Relationship friend = new Friendship( ... );
saveRelation( friend );
...
public void saveRelation(Relationship relation) throws
DAOException {
try {
if (relation instanceof Friendship) {
getSqlMapExecutor().insert( "insertFriend",
relation );
} else if ...
...
} catch (SQLException e) {
throw new DAOException( "Error saving friend", e );
}
}
Why ibatis does not discover object properties at runtime? Is
there any way to use abstract classes in my sql-map files?
I am not sure if I have explained my problem properly...
Thank you very much.
Guido García Bernardo
--
Guido García Bernardo
Tfn. +34 983 54 89 08
ITDEUSTO - Valladolid