【发布时间】:2016-03-30 06:16:38
【问题描述】:
我对 JPQL 不是很熟悉,但我知道您可以通过执行以下操作来参数化条件:
em.createQuery("SELECT p FROM Person p WHERE p.firstName = :name)
.setParameter("name","Bill");
或者:
em.createQuery("SELECT p FROM Person p WHERE p.firstName= ?1)
.setParameter(1,"Bill");
但是你能参数化别的东西吗?通过参数化 WHERE 子句来说出标准。例如,您可以执行以下操作:
em.createQuery("SELECT p FROM Person p WHERE :criteria = Bill)
.setParameter("criteria","p.lastName");
我测试了上面的代码,但它不起作用,所以我的问题是:有没有办法在 JPQL 中参数化 WHERE 子句。或者是否有任何其他查询语言支持 WHERE 子句参数化?非常感谢!
【问题讨论】:
-
你能用
Criteria API吗? -
不,不使用 JPQL。没有意义。使用标准
-
我检查了 Criteria API,但没有发现任何有用的东西...谢谢!