我正在用H2数据库编写集成测试.我的数据库(生成)初始化包含此脚本(因为生成的连接表没有此列):
ALTER TABLE INT_USR ADD IU_INSDTTM TIMESTAMP DEFAULT NOW();
Run Code Online (Sandbox Code Playgroud)
这是我创建记录的方式:
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
Run Code Online (Sandbox Code Playgroud)
方法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();
Run Code Online (Sandbox Code Playgroud)
后来在我的测试中:
Query query = entityManager.createNativeQuery(
"SELECT * FROM INT_USR ORDER BY IU_INSDTTM");
List resultList = query.getResultList();
Run Code Online (Sandbox Code Playgroud)
当我在resultList中调试此测试时,有两个记录(正确)但它们具有相同的时间戳.即使我在标记为// 1的行上插入断点并等待一段时间 - 因此插入之间的时间间隔也很重要.(Thread.sleep - 相同的结果)
我试图将SQL脚本修改为
ALTER TABLE INT_USR ADD IU_INSDTTM TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
Run Code Online (Sandbox Code Playgroud)
但结果相同.为什么两个结果都有相同的时间戳?