statement.setString(7, serialize((Serializable) timerEntity.getPrimaryKey()));
statement.setString(8, serialize(timerEntity.getTimerInfo()));
statement.setString(9, timerEntity.getState().name());
if (timerEntity instanceof CalendarTimer) {
final CalendarTimer c = (CalendarTimer) timerEntity;
statement.setString(10, c.getScheduleExpression().getSecond());
statement.setString(11, c.getScheduleExpression().getMinute());
statement.setString(12, c.getScheduleExpression().getHour());
statement.setString(13, c.getScheduleExpression().getDayOfWeek());
statement.setString(14, c.getScheduleExpression().getDayOfMonth());
statement.setString(15, c.getScheduleExpression().getMonth());
statement.setString(16, c.getScheduleExpression().getYear());
statement.setTimestamp(17, timestamp(c.getScheduleExpression().getStart()));
statement.setTimestamp(18, timestamp(c.getScheduleExpression().getEnd()));
statement.setString(19, c.getScheduleExpression().getTimezone());
statement.setBoolean(20, c.isAutoTimer());
if (c.isAutoTimer()) {
statement.setString(21, c.getTimeoutMethod().getDeclaringClass().getName());
statement.setString(22, c.getTimeoutMethod().getName());
StringBuilder params = new StringBuilder();
final Class<?>[] parameterTypes = c.getTimeoutMethod().getParameterTypes();
for (int i = 0; i < parameterTypes.length; ++i) {
params.append(parameterTypes[i].getName());
if (i != parameterTypes.length - 1) {
params.append(";");
}