【问题标题】:JavaDB/Hibernate/Swing autosortJavaDB/Hibernate/Swing 自动排序
【发布时间】:2011-11-17 08:51:29
【问题描述】:

我有一个带有 Hibernate 和网络 JavaDB/DerbyDB 的 Java swing 应用程序。有一个表结构是这样的:

TestID QuestionID
T1234 Q1
T1234 Q2
T1234 Q3
T1234 Q4
..
..
T1234 Q10

其中 TestID 和 QuestionID 的组合已被定义为主键。每当我添加/插入带有测试 ID 'T1234' 和 QuestionID 'Q10' 的行时,记录会立即添加到包含 QuestionID 'Q1' 的记录之后。示例:

TestID QuestionID
T1234 Q1
T1234 Q10
T1234 Q3
T1234 Q4

我不希望发生这种情况,因为这会在获取记录时给我带来麻烦。请告诉我应该怎么做才能避免这种情况。

我们将不胜感激。

【问题讨论】:

  • 您在获取记录时遇到了什么问题?如果您需要对它们进行排序,那么您必须在选择查询中指定它
  • @user1041345 你的代码是否随时可用我自己正在尝试做一个 simailr 的事情

标签: java hibernate swing derby javadb


【解决方案1】:

定义你自己的类型

class QuestionID implements Comparable<QuestionID> {…}

并在您的TableModel 中使用它而不是String。让它的构造函数提取从数据库返回的questionID 的数字部分,并让它的compareTo() 实现只检查那个数字。 Value 类是 JTableTest 就是一个例子。

【讨论】:

    【解决方案2】:

    两个想法:(a) 将 QuestionID 存储为 1、10、3、4 等,并在应用程序中添加“Q”前缀,或者 (b) 使用 0 填充存储 QuestionID,如:Q001, Q010、Q003、Q004等

    【讨论】:

      【解决方案3】:

      显然,数据库存储记录的顺序不一定与插入它们的顺序相同。因此,现在由于我必须按照将记录输入数据库的顺序来获取记录,因此我在进行插入时使用自动递增计数器,并在获取记录时使用 order by 子句(在计数器上)。

      【讨论】:

        猜你喜欢
        • 2013-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-11
        • 2014-07-16
        • 1970-01-01
        • 2021-02-06
        • 1970-01-01
        相关资源
        最近更新 更多