我有以下工作查询,它根据联接地图的键和值进行选择。
@Query("select e from Entity e join e.dataAttributes da where " +
"(key(da) =:attrKey1 and :attrVal1 in (value(da)) )")
List<Entity> findByAttrributeValues(@Param("attrKey1") String attrKey1,
@Param("attrVal1") String attrVal1);
我想基于2个键和2个值进行选择,但遇到了困难。以下可能非常复制尝试不会返回结果:
@Query("select e from Entity e join e.dataAttributes da where " +
"(key(da) =:attrKey1 and :attrVal1 in (value(da)) ) and " +
"(key(da) =:attrKey2 and :attrVal2 in (value(da)) )")
List<Entity> findByTwoAttrributeValues(@Param("attrKey1") String attrKey1,
@Param("attrVal1") String attrVal1,
@Param("attrKey2") String attrKey2,
@Param("attrVal2") String attrVal2);
我是JPA的新手,任何指导都将不胜感激
答案 0 :(得分:4)
所以我有这个解决方案:
@Query("select e from Entity e join e.dataAttributes da join e.dataAttributes da2 where " +
"(key(da) =:attrKey1 and :attrVal1 in (value(da)) ) and " +
"(key(da2) =:attrKey2 and :attrVal2 in (value(da2)) )")
List<Entity> findByTwoAttrributeValues(@Param("attrKey1") String attrKey1,
@Param("attrVal1") String attrVal1,
@Param("attrKey2") String attrKey2,
@Param("attrVal2") String attrVal2);
我需要再次使用第二个标识符加入dataAttributes。按预期工作。可能不是最漂亮的。如果有更好的方式让我知道