我刚刚在 Glassfish 3 上运行的简单 Java Web 应用程序中掌握了 JPA(持久性提供程序是 EclipseLink)。到目前为止,我真的很喜欢它(除了 netbeans/glassfish 交互中的错误),但有一件事我希望能够做到,但我不知道该怎么做。
我有一个映射到数据库表(文章)的实体类(文章)。我正在尝试对返回计算列的数据库进行查询,但我不知道如何设置 Article 类的属性,以便在调用查询时该属性由列值填充。
如果我执行常规的“从文章中选择 id、title、body”查询,我会得到一个 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);
(这是在 Postgres 上使用 tsearch2 的全文搜索 - 这是一个特定于数据库的函数,所以我使用的是 NativeQuery)
您可以看到我正在获取一个计算列,称为标题。如何将标题属性添加到我的文章类,以便它被此查询填充?
到目前为止,我已经尝试将它设置为@Transient,但最终它始终为空。