我有以下实体
@Entity
public class Conversation implements Serializable {
@Id
private int Id;
@Column
private Alias AliasA;
// SNIP
}
和
@Entity
public class Alias implements Serializable {
@Id
private String alias;
@Column
private String personalName;
@OneToMany(mappedBy = "alias", cascade = CascadeType.ALL)
@MapKeyColumn(name="address")
private Map<String, Recipient> recipients = new HashMap<String, Recipient>();
}
和
@Entity
public class Recipient implements Serializable {
@Id
@GeneratedValue
private long id;
@Column
private String address;
@Column
private RecipientStatus status;
@ManyToOne
private Alias alias;
}
我想做类似下面的 JPQL 查询
SELECT conversation FROM Conversation conversation WHERE :sender MEMBER OF conversation.aliasA.recipients AND conversation.adId=:adID
其中 :sender
位于我的 map 的键中。然而,MEMBER OF
关键字似乎仅适用于集合,不适用于 map 。我相信 JPA 2.0 应该提供 KEY
关键字,但这似乎还没有在 OpenJPA 中实现。有替代方案吗?
更新:添加信息以澄清我的问题。
最佳答案
有一个 VALUE
关键字应该允许您执行如下操作:
SELECT c FROM Conversation c JOIN c.aliasA a JOIN a.recepients r
WHERE VALUE(r) = :sender AND conversation.adId=:adID
关于java - 在 OpenJPA 中使用 map 查询实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10208352/