0
我遇到一些麻煩設置以下查詢where
條款:標準的API集謂詞的where子句MapJoin
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Configuration> cq = cb.createQuery(Configuration.class);
Root<Configuration> conf = cq.from(Configuration.class);
MapJoin<Configuration, String, Component> mapJoin = conf.join(Configuration_.components, JoinType.LEFT);
cq.where(cb.and(cb.like(mapJoin.key(), "%abc%"),
cb.like(mapJoin.value().get(Component_.displayName), "%def%")));
cq.select(pc);
我基本上是試圖讓包含在組件的條目中的所有配置 - 鍵包含「abc」且其值包含「def」的映射。 我期望這個工作,基於從http://blogs.oracle.com/ldemichiel/entry/java_persistence_2_0_proposed,部分Maps
的示例代碼,但顯然我錯過了一些東西。
實體具有以下結構:
@Entity
public class Configuration{
@Id
protected Long id;
@OneToMany
protected Map<String, Component> components;
}
和
@Entity
public class Component{
@Id
protected Long id;
protected String displayName;
}
預先感謝您,感謝任何幫助。
謝謝,這讓我走向了正確的方向 – glasspill 2012-02-07 20:51:20