假设我有以下JPA映射。
@Entity
@Table(name = "transaction")
public class Transaction {
@ElementCollection(targetClass = String.class, fetch = FetchType.EAGER)
@JoinTable(name = "trx_addi_info")
private Map additionalInfo;
}
我想写HQL来获取所有在AdditionalInfo映射中具有特定键值对的交易。我想我必须像下面这样加入
SELECT trx FROM Transaction trx inner join trx.additionalInfo addInfo WHERE addInfo.????
但是我不清楚如何在附加信息映射中放置WHERE子句以与特定键值对匹配。有人可以帮我吗?
提前致谢。
最佳答案
您需要使用特定于HQL index()
的函数,该函数适用于联接的索引集合(数组,列表和映射)的别名。请参见Hibernate参考文档的14.10. Expressions部分
//Example of HQL returning `Transaction` object that have `additianlInfo` with
//the `KEY` equal to the string `test`
SELECT trx FROM Transaction trx inner join trx.additionalInfo addInfo WHERE index(addInfo) > 'test'