我有下面的數據庫模式。休眠,分配多個列作爲主鍵
Table:items
item_id int(11) autoincrement not null
item_name varchar(22) not null
version_start_date datetime not null
version_end_date datetime
上表的主鍵是(item_id,version_start_date)。 version_start_date和version_end_date的語義是跟蹤對錶格行的任何更改。如果項目名稱被修改,則會添加新行並更新舊行version_end_date。
我試圖在hibernate中對此進行建模,但複合鍵不允許根據模式存在生成器。我需要爲itemid生成器。我如何在休眠模型中進行建模。
我阻止我在這個步驟:(任何幫助將不勝感激。
謝謝 巴拉
-- Updated
所以,最後我想下面的方法。我不想去自然ID,因爲我要生成的ID。相反,我想有item_version_id場也在表。
因此,新的模式將是...
Table:items
item_version_id autoincrement not null
item_id int(11) autoincrement not null
item_name varchar(22) not null
version_start_date datetime not null
version_end_date datetime
primary key(item_version_id)
unique key(item_id,version_start_date)
我在想這種方法可行。但是,我不知道如何在休眠中做到這一點。
只有ID元素可以有發生器。但在這種情況下,我有兩臺發電機。有沒有解決這個問題的方法。
謝謝
巴拉
我以爲太多的替代品和一點困惑。你能提供一個例子嗎? – Boolean 2010-07-22 21:36:12
@algorist自然鍵的例子或自定義休眠類型的例子? 自然的重要文件是在這裏 http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html#mapping-declaration-naturalid 它很容易。 自定義hibernate類型的例子並不那麼平凡。 – hvgotcodes 2010-07-22 21:39:24
你可以看看現在的問題。 – Boolean 2010-07-22 22:43:19