Я только начинаю понимать JPA в простом веб-приложении на Java, работающем на Glassfish 3 (поставщик постоянства - EclipseLink). Пока что мне действительно это нравится (кроме ошибок в взаимодействии с netbeans / glassfish), но я хочу кое-что сделать, но я не знаю, как это сделать.
У меня есть класс сущности (Article), который сопоставлен с таблицей базы данных (article). Я пытаюсь выполнить запрос к базе данных, который возвращает вычисляемый столбец, но я не могу понять, как настроить свойство класса Article, чтобы свойство заполнялось значением столбца при вызове запроса.
Если я выполняю обычный запрос «выбрать идентификатор, заголовок, тело из статьи», я получаю список объектов Article в порядке с заполненными свойствами id, title и body. Это отлично работает.
Однако, если я сделаю следующее:
Query q = em.createNativeQuery("select id,title,shorttitle,datestamp,body,true as published, ts_headline(body,q,'ShortWord=0') as headline, type from articles,to_tsquery('english',?) as q where idxfti @@ q order by ts_rank(idxfti,q) desc",Article.class);
(это полнотекстовый поиск с использованием tsearch2 на Postgres - это специфичная для БД функция, поэтому я использую NativeQuery)
Вы видите, что я выбираю вычисляемый столбец, называемый заголовком. Как добавить свойство заголовка в мой класс Article, чтобы оно заполнялось этим запросом?
До сих пор я пытался установить для него значение @Transient, но это просто приводит к тому, что оно все время равно нулю.