H2 データベースとの統合テストを書いています。私のデータベース(生成された)の初期化には、このスクリプトが含まれています(生成された結合テーブルにはこの列がないため):
ALTER TABLE INT_USR ADD IU_INSDTTM TIMESTAMP DEFAULT NOW();
これは私がレコードを作成する方法です:
Integration integrationOne = createIntegration(firstId, "FIRST");
Integration integrationTwo = createIntegration(secondId, "SECOND");
flushAndClear();
userService.logRecentIntegration(integrationOne.getId(), user.getId());
flushAndClear();
userService.logRecentIntegration(integrationTwo.getId(), user.getId()); //1
メソッド logRecentIntegrations(.., ..) は DAO を呼び出すだけで、dao はこれを行います。
Query query = entityManager.createNativeQuery(
"INSERT INTO INT_USR (USR_ID, INT_ID) VALUES (?, ?)");
query.setParameter(1, userId)
.setParameter(2, integrationId);
query.executeUpdate();
後で私のテストで:
Query query = entityManager.createNativeQuery(
"SELECT * FROM INT_USR ORDER BY IU_INSDTTM");
List resultList = query.getResultList();
このテストをresultListでデバッグすると、2つのレコード(正しい)がありますが、タイムスタンプは同じです。//1 とマークされた行にブレークポイントを挿入してしばらく待った場合でも、挿入間の時間差は大きくなります。(Thread.sleep - 同じ結果)
SQLスクリプトを次のように変更しようとしました
ALTER TABLE INT_USR ADD IU_INSDTTM TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
しかし、同じ結果です。両方の結果のタイムスタンプが同じなのはなぜですか?