原因:java.lang.IllegalStateException:在查询执行期间提供的参数列表中找不到查询参数 creationDateTime

Caused by: java.lang.IllegalStateException: Query argument creationDateTime not found in the list of parameters provided during query execution

我试图涵盖 :creationDateTime 为 Null 的情况,以获得与以下查询“SELECT o FROM ExtraNetOrder o”相同的结果。我在网上搜索了一下,通过添加IS NULL找到了解决办法,但是 在我的情况下不起作用。目前我收到以下错误:

Caused by: java.lang.IllegalStateException: Query argument creationDateTime not found in the list of parameters provided during query execution.

如果参数:creationDateTime 不存在,则应在不带where 参数子句的情况下执行查询。在我的 table 中,我没有值为 NULL 的 creationDateTime。

在最终查询中,我有 3 个参数传递给查询。为了简单起见,我只添加了一个参数 (creationDateTime)。

我在项目中使用 EclipseLink。

@NamedQueries({
    @NamedQuery(name="order_by_filter_options", query="SELECT o FROM ExtraNetOrder o "
            + " WHERE :creationDateTime IS NULL OR :creationDateTime = '' OR o.creationDateTime >=:creationDateTime ")
})

-------------------
Query q = em.createNamedQuery("order_by_filter_options");
if (fromDate != null)
    q.setParameter("creationDateTime", fromDate);

@SuppressWarnings("unchecked")
List<ExtraNetOrder> orders = q.getResultList();

如果 fromDate 为 null,则需要将 :creationDateTime 设置为 null。只需删除 if 并始终调用 q.setParameter("creationDateTime", fromDate);