0

我有一个带有 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

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

帮助将不胜感激。

4

3 回答 3

1

定义自己的类型

class QuestionID implements Comparable<QuestionID> {…}

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

于 2011-11-17T17:32:37.563 回答
0

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

于 2011-12-29T09:40:45.363 回答
0

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

于 2011-11-17T15:11:21.347 回答