Наследование с метамоделью Java - PullRequest
0 голосов
/ 11 июня 2018

В моем приложении у меня есть несколько сущностей, которые расширены из класса User.Пользователь имеет поля firstName и lastName.Существует поиск для каждой сущности, расширенной от пользователя.Для осуществления поиска я использую Criteria API.Поскольку речь идет об одних и тех же параметрах, запросы к ним выглядят очень похоже.Поэтому я решил создать универсальный класс, чтобы собрать все в одном месте

public abstract class NameSpecificationManager<Entity, SearchDto extends BasicSearchDto, MetaModel extends User_>
    extends SpecificationManager<Entity, SearchDto> {

    protected final SpecificationBuilder<Entity> entityByFirstName = (final String firstName) ->
        (root, query, cb) -> cb.like(root.get(MetaModel.firstName), getParameterPattern(firstName));

    protected final SpecificationBuilder<Entity> entityByLastName = (final String lastName) ->
        (root, query, cb) -> cb.like(root.get(MetaModel.lastName), getParameterPattern(lastName));

}

Вот здесь SpecificationBuilder:

 public interface SpecificationBuilder<Entity> {
     Specification<Entity> getSpecOfSearchParam(String searchParam);
 }

Проблема в том, что MetaModel.lastName и MetaModel.firstName подчеркнуты Intellij(он говорит, что "Не удается разрешить метод с ... User.firstName").Может быть, это потому, что не ясно, какое именно расширение класса User мы ожидаем.Может быть, есть способ избежать этого.Заранее спасибо.

...