2011-11-02 79 views
3

我有由JPA支持的Vaadin應用程序。此應用程序中的組件綁定到bean屬性(通過獨立的EL實現)。某些組件綁定到外部對象(或其字段),由@OneToOne,@OneToMany,@ManyToOne和@ManyToMany註釋鏈接。通過實現com.vaadin.data.Property並將其設置爲組件的DataSources來執行綁定。Vaadin + JPA +延遲加載

現在的問題是:如果在窗體提交給瀏覽器之後組件將被刷新(通過vaadin的ajaxes),將會在「屬性」中延遲加載工作嗎?

回答

2

如果您已將EntityManager上的PersistanceContext設置爲PersistenceContextType.EXTENDED,那麼您的實體將處理此事件,因此也會處理vaadin。如果你沒有它,那麼你將不得不加載他們manualy。

@PersistenceContext(unitName = "yourname", type=PersistenceContextType.EXTENDED) 
private EntityManager entityManager; 
+0

感謝您的回答! 但在我的情況下,我必須從EntityManagerFactory自己構建EntityManager,所以我不能使用@PersistenceContext EntityManager。 也許我找到了某種解決方案 - 我想從存儲在com.vaadin.Application中的EntityManager中讀取,並使用每次需要寫入東西時創建的EntityManager進行編寫。 –

+0

我的最後一個答案已被棄用。我不得不重新討論數據庫通信代碼的體系結構,並且再次嘗試使用jpa,這次使用EntityManager請求範圍,導致在每個大對象圖合併時生成後續SELECT查詢。現在我正朝着jOOQ的方向看,根本沒有JPA) –