You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-java@ibatis.apache.org by Dodo <j2...@gmail.com> on 2006/07/08 05:45:08 UTC
TypeHandlerCallback problem
Hi,
If I have an Item.java class that has a complex object
, MonetaryAmount.java as its field. Now for security reason,
fields of MonetaryAmount class has private final fields and
getter methods only, setter methods are empty.
Now you can see I have problem using TypeHandlerCallback
to return MonetaryAmount's private final field as setter
method for Currency needs to be empty
E.g.
public class Item {
private Monetary initialPrice;
// setter and getter for initialPrice
....
}
and
public class MonetaryAmount implements Serializable {
private final BigDecimal value;
private final Currency currency;
public MonetaryAmount(BigDecimal value, Currency currency) {
this.value = value;
this.currency = currency;
}
public Currency getCurrency() {
return currency;
}
public BigDecimal getValue() {
return value;
}
.........
public void setCurrency(Currency currency) {
}
public void setValue(BigDecimal value) {
}
}
so mapping file will look like
<typeAlias alias="item" type="org.auctionfuse.model.Item"/>
<resultMap id="itemResult" class="item">
<result property="id" column="item_id"/>
..
<!-- initialPrice is MonetaryAmount field -->
<result property="initialPrice.value" column="initial_price"/>
<result property="initialPrice.currency" column="currency"
typeHandler= "org.auctionfuse.ibatis.typehandler.CurrencyTypeHandler" />
...
</resultMap>
where CurrencyTypeHandler implements TypeHandlerCallback and tries to converts
string retrieved from database to Currency object
but the problem is setter methods of MonetaryAmount.java simply does nothing
I was wandering if anyone has elegant solution in iBatis.
Thanks,
Sam