0
我已經使用JSF + Spring + JPA創建了示例項目。 我有兩個實體客戶和訂單,客戶可以有多個訂單,因此客戶和訂單之間的映射是@OneToMany。 Customer類是如下OpenEntityManagerInView不能使用JSF
@Entity
@NamedQueries
(
{
@NamedQuery(name=Contact.QUERY_FIND_ALL, query="FROM Contact"),
}
)
public class Customer
{
public final static String QUERY_FIND_ALL="findAll";
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
private List<Order> orders;
public List<Order> getOrders()
{
return orders;
}
public void setOrders(List<Order> orders)
{
this.orders = orders;
}
}
我查看就像下面
1種情況:
- 我們加載所有CUTOMER,並在屏幕上顯示出來,並在 前每個箭頭在一個請求中記錄這種情況。
現在當最終用戶點擊箭頭時,我們想要顯示客戶的所有訂單 。
但我得到延遲加載異常,即使我使用OpenEntityManagerInView。
第二個案例:
- 如果我同時加載客戶和訂單在一個請求時,它做工精細。
有沒有這樣的事情,如果我們在一個請求中加載父項,我們不能在第二個請求中加載它的惰性關聯?
爲什麼它不在第一種情況下工作,在第二種情況下工作?
和
更重要的是什麼其他的解決辦法將其存檔?
只有在頁面呈現時,「OpenSessionInViewFilter」僅適用於單個請求會話關閉。現在當你點擊一個箭頭時,原來的會話就不存在了,因此懶惰的加載不起作用。 –
感謝M. Deinum,但是有文件說我們不能在http請求中使用OpenEntityManagerInView? – Vipul
提到的類的javadoc以及這是在視圖中如何打開會話的一般概念。你想要什麼(或多或少)是對話中的開放視角。 –