У меня есть следующие вызовы в одном из моих классов
@Override
public Integer save(NewsItem item){
ConnectionPool pool = new ConnectionPool();
Connection connection = pool.getConnection();
PreparedStatement ps = null;
try{
String query = "INSERT INTO newsItem (type,title,content,link,layout,imageUri,timestamp)" +
"VALUES (?,?,?,?,?,?,?)";
ps = connection.prepareStatement(query);
ps.setInt(1,item.getType());
ps.setString(2,item.getTitle());
ps.setString(3,item.getContent());
ps.setString(4,item.getLink());
ps.setInt(5,item.getLayout());
ps.setString(6,item.getImageUri());
ps.setDate(7,item.getTimestamp());
return ps.executeUpdate();
}
catch(SQLException e){
e.printStackTrace();
return 0;
}
finally{
ConnectionUtility utility = new ConnectionUtility();
utility.closePreparedStatement(ps);
pool.freeConnection(connection);
}
}
NewsItem POJO имеет следующие свойства
private Integer id;
private Integer type;
private String title;
private String content;
private String link;
private Integer layout;
private String imageUri;
private Date timestamp;
Все работает и было провереноза исключением вызова timestamp , который
ps.setDate(7,item.getTimeStamp())
Я могу установить Date для объекта NewsItem , вызвав
item.setTimestamp(new Date());
но я получаю сообщение об ошибке из своей IDE (Eclipse), которое сообщает мне следующее сообщение
Метод setDate (int, Date) в типе NewsItemDAO не применим для аргументовsetDate (int, Date)
Это было проблемой для меня на протяжении всей жизни этого приложения, над которым я работал, потому что мне пришлось хранить временные метки в виде строки в настоящее время.
Если столбец в моей базе данных MySQL имеет тип DATETIME , есть ли другой способ сохранить эту метку времени?Или с вызовом что-то не так?