Fix bug in ItemDAOImpl where null sometimes passed as date. Compare dates as Timestamps

This commit is contained in:
Tim Donohue
2015-10-12 17:44:11 +00:00
parent 1a8ce0a63c
commit 1e8fa3f063

View File

@@ -49,14 +49,24 @@ public class ItemDAOImpl extends AbstractHibernateDSODAO<Item> implements ItemDA
boolean withdrawn, boolean discoverable, Date lastModified) boolean withdrawn, boolean discoverable, Date lastModified)
throws SQLException throws SQLException
{ {
Query query = createQuery(context, "SELECT i FROM Item i" StringBuilder queryStr = new StringBuilder();
+ " WHERE (inArchive = :in_archive OR withdrawn = :withdrawn)" queryStr.append("SELECT i FROM Item i");
+ " AND discoverable = :discoverable" queryStr.append(" WHERE (inArchive = :in_archive OR withdrawn = :withdrawn)");
+ " AND last_modified > :last_modified"); queryStr.append(" AND discoverable = :discoverable");
if(lastModified != null)
{
queryStr.append(" AND last_modified > :last_modified");
}
Query query = createQuery(context, queryStr.toString());
query.setParameter("in_archive", archived); query.setParameter("in_archive", archived);
query.setParameter("withdrawn", withdrawn); query.setParameter("withdrawn", withdrawn);
query.setParameter("discoverable", discoverable); query.setParameter("discoverable", discoverable);
query.setDate("last_modified", lastModified); if(lastModified != null)
{
query.setTimestamp("last_modified", lastModified);
}
return iterate(query); return iterate(query);
} }
@@ -151,7 +161,7 @@ public class ItemDAOImpl extends AbstractHibernateDSODAO<Item> implements ItemDA
throws SQLException throws SQLException
{ {
Query query = createQuery(context, "SELECT i FROM item i WHERE last_modified > :last_modified"); Query query = createQuery(context, "SELECT i FROM item i WHERE last_modified > :last_modified");
query.setDate("last_modified", since); query.setTimestamp("last_modified", since);
return iterate(query); return iterate(query);
} }
} }