我有一个包含转换后属性的实体:
@Entity
@Table(name = "MY_TABLE")
public class MyClass {
@Convert(converter = MyAttributeConverter.class)
private MyAttribute myAttribute ;
//...
}
这是属性:
public class MyAttribute implements Serializable {
private String attributeA;
private String attributeB;
private String attributeC;
// getters and setters
}
我省略了转换器类,因为它并不重要(它只是将属性转换为json,然后转换为字符串,反之亦然)。
我的问题是:是否有一种方法可以创建仅提取具有attributeB等于某物的MyClass实体的条件查询?
我的意思是这样的伪代码:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<MyClass> cq = cb.createQuery(MyClass.class);
Root<MyClass> root = cq.from(MyClass.class);
cq.where(cb.equal(root.get(MyClass_.MyAttribute.attributeB), "Mordor");
也许我可以使用类似的条件:
cq.where(cb.like(root.get(MyClass_.MyAttribute), "%attributeB:'Mordor'"));
但我更愿意避免这种情况。