2009-12-31 29 views
2

我試圖找到一個建築誤差的解決方案,我不是建築師:P兩個映射爲一個數據庫表

有有兩個映射在Hibernate3同桌的可能性?第一個將一些懶惰的屬性設置爲true。第二種映射會將一些懶惰屬性設置爲false;此外,映射是平等的。我知道,這是一種奇怪而奇怪的行爲,但客戶要求快速解決方案。

+1

您是否真的需要第二個映射,或者您可以在獲取實體時將抓取設置爲true/false? – bertolami 2009-12-31 13:03:09

+0

我認爲需要第二個映射,因爲兩種不同的情況:通過聯機和批處理過程讀取同一個實體。在線進程已經設計了它的映射,其中lazy被設置爲false。對於批處理是一個問題,因爲lazy = false會導致讀取所有的層次;這對於長期任務來說是一個很大的問題。這是體系結構問題:可能有第二個映射(將lazy設置爲true)以避免更改「在線映射」?感謝您的幫助,bertolami。 – 2010-01-04 09:00:26

回答

2

從理論上講,沒有理由不這樣做,但你應該小心。休眠緩存(會話和L2緩存)會將它們視爲不同的,所以如果您在同一個會話中使用兩個映射來操作錶行,就會有數據丟失的風險,因爲休眠並不知道它們指的是相同的基礎數據。

0

非常快速的解決方案是將2個不同的類映射到同一個表。