我已经实现了我的自定义CRUD存储库,它增加了一些额外的功能,比如在某个日期之后获取第一张下一张图片(我用它来查找其他图片之后的下一张图片)。但由于某种原因,它不会返回我预期的结果。有时返回的图片与用于搜索的图片相同(此图片的日期)。我100%肯定,我的所有照片都有独特的dateCreated。
任何人都知道我的代码出了什么问题?
public class PictureRepositoryImpl implements CustomPictureRepository {
@PersistenceContext
private EntityManager em;
@Override
public Picture next(Date date) {
TypedQuery<Picture> q = em.createQuery("select p from Picture p where p.dateCreated > :date order by p.dateCreated asc", Picture.class);
q.setParameter("date",date, TemporalType.DATE);
Picture picture = q.setFirstResult(0)
.setMaxResults(1)
.getSingleResult();
if(picture == null)
{
return null;
}
LoggerFactory.getLogger(DemoApplication.class).info("Fetched nextpicture: " + picture.getId() + ")");
return picture;
}
}
更新 我期待在“2016-03-20”之后获得第一张照片,而不是它,我得到相同的照片。
答案 0 :(得分:0)
我已经解决了这个问题,似乎主要问题是没有使用Timestamp,请参阅下面的代码。
TypedQuery<Picture> q = em.createQuery("select p from Picture p where p.dateCreated < :date order by p.dateCreated desc", Picture.class);
q.setParameter("date", date, TemporalType.TIMESTAMP);
List<Picture> pictures = q
.setMaxResults(1)
.getResultList();