java - 表中的行顺序

标签 java hibernate

我遇到以下问题:我正在加载仅包含删除和插入的“dif”表。 “更改”由删除后插入来确定。

该表没有主键,也没有可供排序的字段。我想使用 Hibernate 来加载这个表。 (从 MyDifTable obj 中选择 obj,其中 obj.group = groupId)

现在,我在所有值和上述查询上使用键,但我没有按照与源表中相同的顺序获取行。

我的问题是:

  1. 如何让 Hibernate 始终返回与表中相同的顺序?
  2. 在这种情况下如何指定主键?

我知道这是一个设计得很糟糕的东西,我试图与设计团队争论,但没有成功。

最诚挚的问候, 凯

最佳答案

关系数据库基于集合论的一个分支。信息要么在数据库中(在集合中),要么不存在。秩序不是集合中的概念,只有存在才是集合中的概念。这意味着如果需要,您必须显式地对排序进行建模。

如果必须保持顺序,则必须添加“order by”子句来对集合的结果成员进行排序。有时这种排序是外部的(因此您可以延迟排序的决定,直到查询提交时间)。在极少数情况下,将该顺序内化到“数据集”中非常重要。

在奇怪的情况下,您需要内部排序,您必须通过将顺序与集合中的数据一起存储来实现;但是,为了强制存在“order by”子句(查询编写者可能会忽略它),您可能还必须放置一些存储过程/数据 View ,以确保查询始终以正确的顺序返回。

将列表存储到数据库时,内部排序的示例很常见。通常将列表项及其索引存储在列表中的同一行中。这样,当检索它时,您可以恢复项目和排序。

关于java - 表中的行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9415404/

相关文章:

java - 使用有界通配符推断类型的问题

java - android:如何将值从一个广播接收器传递到另一个广播接收器?

java - Hibernate 对集合的查询过滤器

java - 在 JPA 中使用带有串联 id 的字符串列值作为外键

java - Android 上的异步套接字实现

java - 优化低于O(n²)的圆内圆检测算法

sql - FBSQLException 键大小超出实现

java - 为什么 Hibernate 搜索速度慢?即使记录很少

java - 如何测试持久层?

java - MaterialDrawer 添加配置文件选项