我有一个类,是一个实体,并从其继承了一个子类,但是它的字段与父类名称相同。
例如:
@Entity
class Parent {
String parentField;
}
@Entity
class Child extends Parent {
String parent;
}
现在,当我需要执行如下JPA查询时:
Root<Child> childClassRoot = criteriaBuilder.treat(parentRoot, Child.class);
criteriaQuery.select(parentRoot).where(
criteriaBuilder.like(childClassRoot.get("parent"), "%someText%")
)
对我不起作用,因为JPA认为父级不是child.parent,而是父级类。当我将父级重命名为parentText时,它可以正常工作。
因此,如果我修改子类并使用以下查询,则可以正常工作:
@Entity
class Child extends Parent {
String parentText;
}
并查询:
criteriaQuery.select(parentRoot).where(
criteriaBuilder.like(childClassRoot.get("parentText"), "%someText%")
)
有效
但是有什么解决方案不需要重命名列名吗?我的意思是我可以重命名该列以解决此问题,但是还有其他选择吗?
答案 0 :(得分:1)
否
除了重命名之外,没有其他解决方法。