I've got a similar problem. I have a immutable Quantity object that takes two
arguments for its constructor. No of the Quantity properties can be populated
using setter methods. I would like to use a custom type handler to construct
the object. Doing reflection on the result set will not always work because as
there can be more that one Quantity objects per row.
Here is my idea how ibatis could be changed for this to work.
1) Allow multiple column names to be in the 'column' attribute of the result
tag. See below.
<resultMap ...>
<result property="amountOne" column="amount1, currencyType1"
typeHandler="QuantityTypeHandler"/>
<result property="amountTwo" column="amount2, currencyType2"
typeHandler="QuantityTypeHandler"/>
.....
</resultMap>
2) Add a method to give the TypeHandlerCallback access to the names of the
column.
e.g.
public interface TypeHandlerCallback {
public String[] getColumnNames();
....
}
This would allow reflection on the result set using the column names. I'm sure
there are more elegant ways to do this where ibatis would do the reflection.
I guess I can expect someone to implement this in the next few days :)
Paul
-----Original Message-----
From: Ron Turner [mailto:[EMAIL PROTECTED]
Sent: Friday, 08 July 2005 4:28 AM
To: [email protected]
Subject: ResultSet metadata
Hi All,
I'm writing a custom type handler and want to get access to the meta data for
the column in context at the time the handler is invoked. I know that I can get
access to the complete result set using getter.getResultSet(), but how do I
identify the particular column in which I'm interested? There doesn't appear
to be a way to obtain the column's name from the ResultGetter and I'm reluctant
to use reflection to obtain this information... Any thoughts?
Thanks!
"DISCLAIMER: This email, including any attachments, is intended only for use by
the addressee(s) and may contain confidential and/or personal information and
may also be the subject of legal privilege. If you are not the intended
recipient, you must not disclose or use the information contained in it. In
this case, please let me know by return email, delete the message permanently
from your system and destroy any copies.
Before you take any action based upon advice and/or information contained in
this email you should carefully consider the advice and information and
consider obtaining relevant independent advice.