我有一个带有嵌入式元素集合的实体,如下所示:
...
@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
只是两个枚举类的复合类, Provider
和 Response
.
我正在尝试创建谓词:
Predicate providerResponse = builder.equal(root.<Set<ProviderResponse>>get("providerResponses"), compProviderResponse);
这不起作用“参数值ProviderResonse与预期类型[java.util.Set”不匹配
我理解这一点,但我不确定如何进行我想要的比较 .
有人可以帮忙吗?
1 回答
多么尴尬,我只是反思了一下,找到了答案 .
谓词应该是: