0

HibernateとネットワークJavaDB/DerbyDBを備えたJavaSwingアプリケーションがあります。構造には次のようなテーブルがあります。

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

TestIDとQuestionIDの組み合わせが主キーとして定義されている場合。テストID「T1234」および質問ID「Q10」の行を追加/挿入するたびに、レコードは質問ID「Q1」を含むレコードの直後に追加されます。例:

TestID QuestionID
T1234 Q1
T1234 Q10
T1234 Q3
T1234 Q4

これがレコードのフェッチ中に問題を引き起こしているので、これが発生したくありません。これを避けるために何をすべきか教えてください。

ヘルプをいただければ幸いです。

4

3 に答える 3

1

独自のタイプを定義する

class QuestionID implements Comparable<QuestionID> {…}

TableModelの代わりに使用しますStringquestionIDコンストラクターにデータベースから返された数値部分を抽出させ、そのcompareTo()実装にその数値だけを調べさせます。Valueクラスは一JTableTest例です。

于 2011-11-17T17:32:37.563 に答える
0

2つのアイデア:(a)QuestionIDを1、10、3、4などとして保存し、アプリケーションに「Q」プレフィックスを追加するか、(b)Q001、Q010、Q003のように0パディングでQuestionIDを保存します、Q004など。

于 2011-11-17T15:11:21.347 に答える
0

明らかに、データベースは、レコードが挿入された順序と必ずしも同じではない順序でレコードを格納します。したがって、データベースに入力したのと同じ順序でレコードをフェッチする必要があるため、挿入時に自動インクリメントカウンターを使用し、レコードをフェッチするときに(カウンター上の)orderby句を使用します。

于 2011-12-29T09:40:45.363 に答える