JavaDB / Hibernate / Swing自动挂载

时间:2011-11-17 08:51:30

标签: java hibernate swing derby javadb

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

TestID问题ID
T1234 Q1
T1234 Q2
T1234 Q3
T1234 Q4
..
..
T1234 Q10

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

TestID问题ID
T1234 Q1
T1234 Q10
T1234 Q3
T1234 Q4

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

帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

定义您自己的类型

class QuestionID implements Comparable<QuestionID> {…}

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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