【发布时间】:2013-09-21 20:48:21
【问题描述】:
我正在使用 glassfish 和 Java EE 6。我使用 Jersey 创建了一个安静的 Web 服务,它在 Comment 表上执行搜索操作。每条评论都有一个Author。
我有一个@Stateless、@Path('comments') EJB 监听 Http 请求。然后我有这个方法:
@GET
@Path("search")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public List<Comment> getComments(@QueryParam("criteria").....)
我的 JPA 查询获取了一堆 cmets。每条评论都有一个与其作者的关联,因为它没有设置为 LAZY,所以也会被获取,但是除了他的 ID,即使我尝试将它们设置为 @Basic(fetch = FetchType.EAGER),大多数作者的字段都没有被检索到(例如作者的名字) .当我执行以下操作时会检索到:
comment.getAuthor().getName()
但是,如果我在事务中,则此方法有效,因此持久性上下文在我的方法执行期间一直处于活动状态。但是,我不想在这里使用事务,因为这只是搜索数据库而不更改任何数据(因此是@TransactionAttribute(...NOT_SUPPORTED)),所以当我调用上面的 getter 时,我只是得到一个“null”(没有数据是fetched),我不知道如何解决这个问题。
我不想使用事务,但我希望 Eclipselink 急切地获取作者的属性。
编辑:
由于我不在事务中,简而言之,我想要让 eclipselink 为我从查询中获得的每条评论检索我的“comment.author.name”字段。
【问题讨论】:
标签: jakarta-ee jpa eclipselink