2012-11-11 22 views
0

我有一些簡單的屬性表,它們都擴展了@MappedSuperclass。確保使用JPA批註的順序增量或主鍵

每個屬性表都需要有從1L開始的自己的唯一長序列。因此,表格中的記錄數量將始終等於最後一個插入的主鍵值。

我想使用@GeneratedValue註釋但是我不確定使用哪種策略將確保每個表都有自己的從1L向上的主鍵序列。

任何意見,將不勝感激。

我使用Hibernate作爲我的JPA實現。

從不會將記錄從任何表中刪除。 **

///附加背景INFO ////////

我試圖解決的問題是,當我更新表中的屬性,應用程序的其他分佈式元件是通知他們需要根據新的屬性更新他們自己的狀態。我想避免在遠程調用中傳遞新記錄的標識符,並依賴'只看最新插入'的方法 - 因此我試圖確保行數等於最新記錄的ID。

+0

「*表中的記錄數總是等於上一次插入的主鍵值*」 - 這是不可能的。當你刪除一行時,你會做什麼?你正在使用哪些DBMS?甲骨文? PostgreSQL的?火鳥? –

+0

記錄應該 - 永遠不會有行編輯或刪除。只需插入。不確定數據庫 - 只要它受到Hibernate的支持。 – totalcruise

+1

失敗的插入和回滾怎麼辦?您不能保證永遠不會發生(並且所有「自動增量」值都不會回滾值的獲取)。簡而言之:您永遠不應該依賴列的PK值來表示數據庫中的某個狀態。你能解釋一下你試圖解決的真正問題嗎?這聽起來像是一個非常糟糕的計劃。 –

回答

0

我簡單地接受了建議a_horse_with_no_name,並使用Hibernates自動生成策略生成ID - 從不需要根據表中的行數對實體的ID進行連續輸入或聲明。