首页 文章

jpa选择带有条件构建器的嵌入式elementcollection查询

提问于
浏览
0

我有一个带有嵌入式元素集合的实体,如下所示:

...
       @Embedded
       @ElementCollection(targetClass = ProviderResponse.class)
       @JoinTable(
             name = "provider_response",
             joinColumns = @JoinColumn(name = "id")
       )
       @AttributeOverrides({
             @AttributeOverride(name = "provider", column = @Column(name = "provider")),
             @AttributeOverride(name = "response", column = @Column(name = "response"))
       })
       @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
       public Set<ProviderResponse> getProviderResponses() {
          return providerResponses;
       }
...

我想使用JPA CriteriaBuilder框架编写一个Criteria,这样当我传递一个 ProviderResponse 进行比较时,它会返回在 providerResponses 元素集合中具有 ProviderResponse 的所有实体 .

ProviderResponse 只是两个枚举类的复合类, ProviderResponse .

我正在尝试创建谓词:

Predicate providerResponse = builder.equal(root.<Set<ProviderResponse>>get("providerResponses"), compProviderResponse);

这不起作用“参数值ProviderResonse与预期类型[java.util.Set”不匹配

我理解这一点,但我不确定如何进行我想要的比较 .

有人可以帮忙吗?

1 回答

  • 0

    多么尴尬,我只是反思了一下,找到了答案 .

    谓词应该是:

    Predicate providerResponsePredicate = builder.isMember(compProviderResponse, root.<Set<ProviderResponse>>get("providerResponses"));
    

相关问题