将空列表作为参数传递给JPA查询会引发错误。

15 浏览
0 Comments

将空列表作为参数传递给JPA查询会引发错误。

如果我将一个空列表传递给JPA查询,就会出现错误。

例如:

List municipalities = myDao.findAll();  // 返回空列表
em.createQuery("SELECT p FROM Profile p JOIN p.municipality m WHERE m IN (:municipalities)")
    .setParameter("municipalities", municipalities)
    .getResultList();

由于列表是空的,Hibernate在SQL中生成的查询为"IN ()",这在Hypersonic数据库中导致错误。

Hibernate问题跟踪中有相关的票,但没有太多的评论/活动。我也不清楚其他ORM产品或JPA规范的支持情况。

我不喜欢每次都手动检查null对象和空列表的想法。是否有一些常见的方法/扩展来处理这种情况?你是如何处理这些情况的?

0