Hol*_*ite 4 java orm jpa eclipselink jpql
是否可以针对关联数组运行"MEMBER OF"查询?如果是这样,语法是什么样的?显而易见的解决方法是本机查询,但是对于所有连接等都会变得非常混乱.我想测试地图的键集,值集合或条目集中是否存在对象.可能类似于以下内容:
SELECT p FROM Person p WHERE 'home' MEMBER OF p.phoneNumbers.keySet
SELECT p FROM Person p WHERE '867-5309' MEMBER OF p.phoneNumbers.values
SELECT p FROM Person p WHERE {'home' -> '867-5309'} MEMBER OF p.phoneNumbers
Run Code Online (Sandbox Code Playgroud)
与提供者无关的代码可能要求太多; Eclipselink支持这个吗?
JPQL有一个名为的函数index(),用于获取@OrderColumn列表中的索引.正如你自己所说,地图也称为关联数组,地图键对应于数组索引.因此,没有什么可以阻止index()返回映射条目的键.
这个查询在hibernate上完美运行:
SELECT p FROM Person p, in (p.phoneNumbers) number
WHERE number = '867-5309' AND index(number) = 'home'
Run Code Online (Sandbox Code Playgroud)