我有下面的数据库模式。休眠,分配多个列作为主键
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