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