【问题标题】:how to do hibernate mapping for table or view without a primary key [duplicate]如何在没有主键的情况下为表或视图进行休眠映射[重复]
【发布时间】:2010-10-28 00:48:39
【问题描述】:

可能重复:
Hibernate and no PK

有人知道如何在没有主键的情况下为表或视图进行休眠映射吗?

【问题讨论】:

标签: java hibernate jdbc


【解决方案1】:

不要认为 Hibernate 允许映射没有主键的表...想想 Hibernate 如何在没有可以唯一标识行的列的情况下执行更新。

我想一种解决方法是对所有列使用复合键,但添加主键会更好。

【讨论】:

  • 我认为您在这里是正确的。此外(所有列的)复合键仍然需要是主键,因此您最好制作更合理的复合键或选择唯一标识列作为主键。
  • 我不知道这在只读情况下是否重要(wrt udpates)。
  • 那么,当我从没有主键的视图中选择,并且不想更新视图时,我该怎么办?
【解决方案2】:

我只会在您读取数据(而不是写入数据)时这样做。当你有一个类似 oracle 的数据库时,你可以有类似的语句

select DOKUMENT.*, ROWID from DOKUMENT

→ 因此,您可以将此语句添加到 Hibernate 映射中:

<id column="ROWID" type="string" />

随后,您将所有其他列定义为

<property...

当您使用逆向工程向导时,您可以

  1. 移除复合键标签,
  2. 搜索并替换 key-property 的属性和
  3. 插入上面的行

【讨论】:

  • 您必须相应地更改您的插入/更新代码
猜你喜欢
  • 2018-01-15
  • 1970-01-01
  • 2010-10-17
  • 2023-03-08
  • 2018-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多