У меня есть метод с PreparedStatement
public static boolean TSTHolidayPrepMapper(PreparedStatement st, TSTObject item, MapperType type) throws SQLException
{
TSTHoliday hol = (TSTHoliday) item;
int id = 1;
if (type != MapperType.DELETE)
{
st.setString(id++, hol.getCountry());
st.setString(id++, hol.getCommodity());
st.setString(id++, hol.getMarketArea());
st.setString(id++, hol.getMarketPlace());
st.setString(id++, hol.getName());
st.setDate(id++, hol.getCalenderDate());
}
if (type != MapperType.INSERT)
st.setInt(id++, hol.getId());
return true;
}
, который ожидает объект типа Date на st.setDate(id++, hol.getCalenderDate())
, но метод getCalenderDate () доставляет объект класса, который я сам создал, с именем TSTLocalDate
public class TSTLocalDate extends TSTObject
{
public int year;
public int month;
public int day;
public TSTLocalDate()
{
this.year = 1900;
this.month = 1;
this.day = 1;
}
public TSTLocalDate(int year, int month, int day)
{
this.year = year;
this.month = month;
this.day = day;
}
public String toString()
{
String val = "" + year + "-" + TSTStringFormatter.getIntWithLeadingZeros(month, 2) + "-" + TSTStringFormatter.getIntWithLeadingZeros(day, 2);
return val;
}
}
Я думал о двух разных решениях
Я пытался преобразовать мою TSTLocalDate calenderDate в Date calenderDate, но, похоже, он не работает должным образом с датыметоды классов устарели
@SuppressWarnings({ "deprecation"})
public Date tstlocaldateToDate(TSTLocalDate tstlocaldate) throws ParseException {
Date date = new Date(0);
date.setYear(tstlocaldate.year);
date.setMonth(tstlocaldate.month);
date.setDate(tstlocaldate.day);
Log.info(date.getYear());
return date;
}
- Я пытался найти способ объявить собственный тип данных для PreparedStatement, чтобы я мог передать calenderDate как объект TSTLocalDate в PreparedStatement, например
st.setTSTLocalDate(id++, hol.getCalenderDate());
, но, к сожалению, яне нашел способ, как это сделать.
Я бы предпочел второе решение, но я открыт и для других решений.