Spring Boot jpa 使用连接映射中的多个键值进行选择

标签 spring hibernate jpa spring-boot

我有以下工作查询,它​​根据连接映射的键和值进行选择。

@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 新手,任何指导将不胜感激

最佳答案

所以我有这个解决方案:

@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。现在按预期工作。可能不是最漂亮的如果有更好的方法请告诉我

关于Spring Boot jpa 使用连接映射中的多个键值进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36579079/

相关文章:

java - 使用 RestTemplate 时如何在分段上传中设置文件的内容类型(来自休息客户端)

hibernate - 无法设置 Hibernate 中的通用生成器参数

java - 在 hibernate 中合并具有复合主键的实体时出现异常

hibernate - 为什么我在 groovy 代码中得到 java.util.ConcurrentModificationException?

java - Spring @Transactional on @Bean 声明而不是类实现

java - 对一段时间内的每一天做一个查询,把它变成一个查询

java - 我的 @ Produced EntityManager 在 servlet 容器中线程安全吗?

spring - 使用 JAXB + Spring RESTful Web 服务防止 XXE(外部实体处理)攻击

java - java spring控制台应用程序的全局异常处理程序

java - Spring安全组件扫描