0
我已经实现了我的自定义CRUD存储库,它添加了一些额外的功能,比如在某日期之后获取第一张下一张图片(我正在使用它在其他图片后查找下一张图片)。但由于某种原因,它不会返回我期望的结果。有时返回的图片与搜索时使用的相同(此图片的日期)。我100%确定,我的所有照片都有独特的日期创建。JPA查询返回错误结果
任何人都知道我的代码有什么问题?
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年3月20日”后的第一个画面,而不是它,我得到了相同的画面。
“它不会返回我期望的结果” - 如果您发布了您期望的_what_和您得到的结果,它将有所帮助。 – Thomas
我确定它会返回适合于被调用的SQL的图片。并且调用的SQL是什么? –
我不确定,因为我们通常不使用它,但AFAIK'TemporalType.DATE'可能会导致日期被截断为日精度(或至少高于毫秒精度)。因此,如果在同一天创建了2张图片(或者至少非常接近彼此),您将获得之前创建的图片,这可能是您正在寻找继承者的图片。改为尝试'TemporalType.TIMESTAMP'。 – Thomas