I have a class (call it class A) that contains as an attribute a sub-class (call it class B).
So
public class Request {
private User user;
private ZonedDateTime requestTime;
//getters,setters
}
public class User {
private Integer userID;
//getters,setters
What I am trying to do is insert the request, or in code (assuming myUser and loggerMapper are already created):
Request myRequest = new Request();
myRequest.setuser(myUser);
ZonedDateTime z = ZonedDateTime.now();
myRequest.setrequestTime(z);
loggerMapper.logRequest(myRequest);
Where I have an interface:
public interface loggerMapper {
Boolean logRequest(Request myRequest);
}
And an xml mapper like such:
<insert id="logRequest" parameterType="map">
insert into Request(userID,requestTime)
values (#{userID},#{requestTime})
</insert>
myBatis absolutley hates the ZonedDateTime, it just barfs about
java.lang.IllegalStateException: Type handler was null on parameter mapping for property 'requestTime'.
I answered this by using Joda Time and a custom typehandler.
Have a look here: http://noobjuggler.blogspot.com/2012/01/mybatis-spring-and-joda-datetime-solved.html