我有一个带有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
我不希望发生这种情况,因为这会在获取记录时给我带来麻烦。能告诉我怎样才能避免这种情况。
帮助将不胜感激。
答案 0 :(得分:1)
定义您自己的类型
class QuestionID implements Comparable<QuestionID> {…}
并在TableModel
而不是String
中使用它。让它的构造函数提取从数据库返回的questionID
的数字部分,并让其compareTo()
实现检查该数字。 Value
类JTableTest
就是一个例子。
答案 1 :(得分:0)
两个想法:(a)将QuestionID存储为1,10,3,4等,并在您的应用程序中添加'Q'前缀,或(b)使用0-padding存储QuestionID,如:Q001, Q010,Q003,Q004等
答案 2 :(得分:0)
显然,数据库按顺序存储记录,该顺序不一定与插入顺序相同。因此,现在因为我必须按照我将它们输入到数据库中的顺序来获取记录,所以我在进行插入时使用自动递增计数器并在获取记录时使用order by子句(在计数器上)。 / p>