我正在使用glassfish和Java EE 6.我已經創建了一個平穩的Web服務與澤西島執行搜索操作在Comment
表。每條評論有一個Author
。JPA(Eclipselink impl)懶惰獲取外部交易
我有一個@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查詢獲取一堆評論。每個評論與它的作者有關聯,因爲它沒有設置爲LAZY,所以也被提取,但除了他的ID之外,作者的大部分字段都沒有被檢索(例如作者的名字),儘管我試圖將它們設置爲@Basic(fetch = FetchType.EAGER)
。當我做這樣的事情被檢索:
comment.getAuthor().getName()
但這個作品,如果我是一個事務中如此持久化上下文貫穿我的方法的執行是活的。然而,我不想在這裏使用一個事務,因爲這只是搜索數據庫而不是更改任何數據(因此是@TransactionAttribute(...NOT_SUPPORTED)
),所以當我調用上面的getter時,我只是得到一個「null」(沒有數據被提取) ,我不知道如何解決這個問題。
我不想使用事務處理,但我希望Eclipselink能夠熱切地獲取作者的屬性。
編輯:
因爲我不是一個事務中,簡單地說,我要的是對的EclipseLink取回我的「comment.author.name」字段爲每一個評論,我從我的查詢得到。