Имя столбца конфликтует с именем родительского класса в JPA critBuilder - PullRequest
0 голосов
/ 07 января 2019

У меня есть класс, который является сущностью, и дочерний класс унаследован от него, но у него есть поле, которое совпадает с именем родительского класса.

например:

@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%")
)

, который работает,

но есть ли решение, в котором мне не нужно переименовывать имя столбца? Я имею в виду, я могу переименовать столбец, чтобы исправить это, но есть ли альтернатива?

1 Ответ

0 голосов
/ 07 января 2019

Нет

Нет другого решения, кроме как переименовать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...