I have looked for the answer to this high and low but cannot get the answer.
Basically I have an object I am writing to my db using iBatis. This works fine with primitive types like strings, int's etc but one of the attributes of my object is an array of other objects. I would like to be able to persist this and then later call the 'selectById' statement and retrieve the full object including the array.
Here is the code I have so far:
Mapper.xml
<insert id="insertTrade" parameterClass="TradeObject">
insert into TESTTABLE (
ORDERID,
MAXPX,
COMMISSION,
ACCOUNTGRP )
values (
#orderID#, #maxPx#, #commission#, #accountGrp#
)
accountGrp is my array but its currently throwing an error. The statement works fine without this field.
The java is like so:
public static void insertTrade (Trade obj) throws SQLException {
logger.debug("inserting trade. Order Id: " + obj.toString());
sqlMapper.insert("insertTrade", obj);
}
Thanks for any help in advance!!
I've done with Mybatis3, should be similar in the old iBatis stuff. To get the JDBC stuff, read this thread. It's a huge thread, but it is there. Look for "ArrayDescriptor".
Basicually, you need to write a TypeHandler. In the TypeHandler, call setArray. Should be something like this in mybatis 3.x. Your working with a List, just convert with the toArray method. This is an example, where the parameter is a String[].
and maybe something like this in ibatis,
Make your you've built a type, like it says in that thread.
i.e.
Then in the SQL map, make sure to reference the type handler.