没有主键的休眠

Ank*_*kit 15 hibernate

我用Hibernate制作了一个示例应用程序.我的要求是桌面上没有主键.我只需要从应用程序中选择查询.我知道应该有一个主键,但我所指的表是没有它的.

它有大约5万条记录.因此,修改表以添加ID列不会看到可行的选项.

有可能吗?

Mat*_*all 37

  1. Hibernate 要求实体表具有主键.故事结局.
  2. 当你谈论数据库时,50k记录并不是那么多.

我的建议:在表中添加一个自动增量整数PK列.你会惊讶于它的速度有多快.

  • 这里提到的答案[Hibernate并没有PK工作](http://stackoverflow.com/questions/767277/hibernate-and-no-pk)完全没有触及你的数据库表.这是Hibernate的一个例子,实际上并不检查重复. (3认同)
  • 所以故事不会在第 1 点结束。有办法实现这一点。另请查看:https://sourcedexter.com/handling-database-tables-with-no-primary-key-in-spring-mvc-and-hibernate/。我认为答案需要编辑! (3认同)

rua*_*akh 9

因此,修改表以添加ID列不会看到可行的选项.

为什么?你的意思是,因为它已经有五万条记录了吗?相信我,这真的不是很多.


即使表没有代理键,也没有主键约束,即使你不愿意改变表,它仍然可能有某种候选键 - 也就是说,某些一组永远不为null的列,其值唯一地标识记录.即使不改变表来强制它们的唯一性和非null性,你也可以告诉Hibernate这些列形成一个复合ID.

  • 这是一个很好的答案,但是为了备份OP,有很多情况下,一个人不能改变表并"正确".例如,customer为我们提供了一个创建的视图,该视图不包含ID,没有主键,并且在许多情况下,包含重复的行.非常令人沮丧,但它发生了. (4认同)