У меня есть класс, который является сущностью, и дочерний класс унаследован от него, но у него есть поле, которое совпадает с именем родительского класса.
например:
@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 считает, что parent - это не child.parent, а родительский класс. Когда я переименовываю родителя в parentText, он работает нормально.
Так что, если я изменю дочерний класс и использую следующий запрос, он будет работать нормально:
@Entity
class Child extends Parent {
String parentText;
}
и запрос:
criteriaQuery.select(parentRoot).where(
criteriaBuilder.like(childClassRoot.get("parentText"), "%someText%")
)
, который работает,
но есть ли решение, в котором мне не нужно переименовывать имя столбца? Я имею в виду, я могу переименовать столбец, чтобы исправить это, но есть ли альтернатива?