Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 表中的行顺序_Java_Hibernate - Fatal编程技术网

Java 表中的行顺序

Java 表中的行顺序,java,hibernate,Java,Hibernate,我有以下问题:我正在加载一个只有删除和插入的“dif”表。“变更”由删除后加插入决定 此表没有主键,也没有可按其排序的字段。我想使用Hibernate加载此表。(从MyDifTable obj中选择obj,其中obj.group=groupId) 现在,我正在对所有值和上面的查询使用一个键,并且我没有以与源表中相同的顺序获取行 我的问题是: 如何让Hibernate始终返回与表中相同的顺序 在这种情况下,如何指定主键 我知道这是一个如此糟糕的设计,我曾试图与设计团队争论,但没有成功 致以最良好的

我有以下问题:我正在加载一个只有删除和插入的“dif”表。“变更”由删除后加插入决定

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

现在,我正在对所有值和上面的查询使用一个键,并且我没有以与源表中相同的顺序获取行

我的问题是:

  • 如何让Hibernate始终返回与表中相同的顺序
  • 在这种情况下,如何指定主键
  • 我知道这是一个如此糟糕的设计,我曾试图与设计团队争论,但没有成功

    致以最良好的祝愿,
    Kai

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

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

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


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

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

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

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


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

    请记住,通常情况下,没有排序依据的
    SELECT
    不保证返回行的顺序。考虑到这一点,要求“与表中的顺序相同”是可疑的。确保顺序一致的唯一方法是使用
    orderby
    记住以前的注释。通常,您的特定数据库引擎将具有某种“row_id”属性,您可以使用该属性进行某种排序。但之前的评论是正确的。但语法取决于引擎。请记住,通常不带排序依据的
    SELECT
    不能保证返回行的顺序。考虑到这一点,要求“与表中的顺序相同”是可疑的。确保顺序一致的唯一方法是使用
    orderby
    记住以前的注释。通常,您的特定数据库引擎将具有某种“row_id”属性,您可以使用该属性进行某种排序。但之前的评论是正确的。但是语法依赖于引擎。请小心使用rowid,因为它是特定数据库的实现细节。如果您必须移植到一个新数据库(最终会发生这种情况),那么您必须找到另一个实现类似功能的数据库,并可能重写代码以在另一个数据库上工作。另一方面,如果您在排序中建模而不使用rowid(或任何特定于数据库的功能),那么您的解决方案将适用于任何关系数据库,因为您不依赖于特定于数据库的“功能”。请小心使用rowid,因为它是特定于数据库的实现细节。如果您必须移植到一个新数据库(最终会发生这种情况),那么您必须找到另一个实现类似功能的数据库,并可能重写代码以在另一个数据库上工作。另一方面,如果您在排序中建模而不使用rowid(或任何特定于数据库的功能),那么您的解决方案将适用于任何关系数据库,因为您不依赖于特定于数据库的“功能”。