Java 如何在没有主键的情况下对表或视图进行hibernate映射

Java 如何在没有主键的情况下对表或视图进行hibernate映射,java,hibernate,jdbc,Java,Hibernate,Jdbc,可能重复: 有人知道如何在没有主键的情况下对表或视图进行hibernate映射吗?不要认为hibernate允许在没有主键的情况下映射表……想想hibernate如何在没有可以唯一标识行的列的情况下执行更新 我想一种解决方法是对所有列使用复合键,但最好是添加主键。我只在读取数据(而不是写入数据)时才这样做。当您有一个像oracle这样的DB时,您可以有如下语句 select DOKUMENT.*, ROWID from DOKUMENT → 因此,您可以将以下语句添加到Hibernate映射

可能重复:


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

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


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

我只在读取数据(而不是写入数据)时才这样做。当您有一个像oracle这样的DB时,您可以有如下语句

select DOKUMENT.*, ROWID from DOKUMENT
→ 因此,您可以将以下语句添加到Hibernate映射中:

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

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

<property...

我想你在这里是对的。而且(所有列的)组合键仍然需要是主键,所以最好是制作一个更合理的组合键,或者选择一个唯一标识的列作为主键。我不知道在只读情况下(wrt udpates),这太重要了。因此,当我从没有主键的视图中选择时,不想查看日期我该怎么办?看,你必须相应地更改你的插入/更新代码