1

基本上,我有一个实体(问题简化),如下所示:

@Entity
public class MyClass {

@Id
private String id;

@Basic
private String name;

@Embedded
@ElementCollection
@MapKeyColumn(name="configName")
@Column(name="configValue")
@CollectionTable
private Map<String, String> config = new HashMap<>();

...
}

当我使用 JPA 2.x 的 DataNucleus CriteriaQuery 构造查询时,我的查询值为:

地图>查询输入......

其中 queryINput 保存的值如下:

("k1", ("v1", "v3"))
("k2", ("v2", "v4"))
("k3", ("v3"))

假设(一个 MyClass 实例)的配置具有如下值:

("k1", ("v1"))
("k2", ("v2"))
("k3", ("v3"))

我想要实现的是在输入映射的所有键与配置映射的所有键匹配时搜索 MyClass 并且对于每个匹配的键,配置映射的值在输入映射值中的一个值中,我将返回 MyClass。在上面的示例中,将返回满足条件的实例。

以下都将失败:

("k1", ("v1"))
("k2", ("v2"))
//fail because k3 doesn't present.

或者

("k1", ("v2")) //fail because v2 value is not in the query value list for key k1
("k2", ("v2"))
("k3", ("v3"))

我怎么能做到这一点?

谢谢。

4

0 回答 0