2013-04-24 130 views
2

我有一個實體Customer,它映射到一個視圖,該視圖被定義爲我的數據庫中Customer,Account和Person之間的一系列連接。在JPA/Hibernate中映射到MySQL視圖的持久化實體

我使用JSF 2.0與JPA設置與休眠。後備數據庫是MySQL

我的問題是,鑑於我的Customer實體映射到數據庫視圖,這會如何使新客戶實體持久化變得複雜?

回答

2

我從亞當邊的書引用:

「對於SQL查詢有意見和表之間沒有區別,所以你可以很容易地映射一個JPA實體透明視圖在Java端的代碼保持乾淨,簡單 - 你甚至可以獲得更好的性能,有一個缺點:並不是所有的視圖都是可更新的,視圖是否可更新取決於複雜性和特定的數據庫,例如在Derby DB中,所有視圖都不可更新。

http://www.dzone.com/links/r/mapping_jpa_entities_to_sql_views_it_works_even_w.html

+0

所以我可能不會知道,如果我的看法是可更新的,直到我嘗試,在本質?但理論上它不應該造成問題? – 2013-04-24 14:59:16

+0

我剛剛更新了一個來自Oracle數據庫視圖的值,它工作 – Cris 2013-04-24 18:33:09

+0

我試過設置視圖,但我無法爲實體的ID設置@GeneratedValue,但出現錯誤「Unable to build EntityManagerFactory [ ...]導致:java.io.IOException:損壞的管道導致:java.io.IOException:損壞的管道「 所以我假設我需要在直接映射到數據庫表的實體中生成ID ,只是通過視圖更新,不是嗎? (對不起,我是新來的這個數據庫的東西) – 2013-04-25 04:55:43