【发布时间】:2014-12-28 13:55:29
【问题描述】:
考虑以下实体:
@Entity
public class Parent{
@Column
private String name;
@ElementCollection
@CollectionTable(name="REF_TABLE",joinColumns=@JoinColumn(name="REF_COLUMN_ID"))
@Column(name="REF_COLUMN_VALUE")
public Set<String> getValues() {
return values;
}
}
我需要为“UPPER(REF_COLUMN_VALUE) IN (?values)”实现 JPA 标准 where 子句
到目前为止我有:
root.joinSet(Parent_.values, JoinType.LEFT).in(collectionOfValues)
如何为 values 中的每个元素应用 UPPER 函数?
我知道我可以通过将 String 值定义和包装为 @Embeddable 类来实现这一点,这将为我提供 value 属性的元属性,我可以这样做:
joinSet = root.joinSet(Parent_.values, JoinType.LEFT);
criteriaBuilder.isMember(criteriaBuilder.upper(joinSet.get(WrapedString_.value)),criteriaBuilder.literal(collectionOfValues))
我可以不引入包装器吗?
谢谢
【问题讨论】:
标签: jpa criteria-api jpa-2.1