在条件查询中是否可能对转换后的属性有条件?

时间:2019-11-01 18:12:33

标签: spring-data-jpa jpa-criteria

我有一个包含转换后属性的实体:

@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'"));

但我更愿意避免这种情况。

0 个答案:

没有答案