我的简单查询在JPQL上看起来像这样:
SELECT COUNT(r) FROM org.domain.Resource r WHERE r._parent = :parent AND r._metadata[:metadataKey] is not null
但是Hibernate SQL输出看起来像这样(对于H2和MySQL):
select
count(resource0_.id) as col_0_0_
from
resources resource0_,
resource_metadata metadata1_
where
resource0_.id=metadata1_.resource_id
and metadata1_.datum_key = ?
and resource0_.parent_id=?
and (
metadata1_.datum_value is not null
) limit ?
这里的问题是Hibernate中已知的bug,这会弄乱预处理语句参数。所以在我的情况下,父母和密钥是混合的。
除了原生查询之外的任何解决方案的建议?