重置h2中的自动增量

我正在测试一个返回json响应的控制器但第一次测试失败,因为h2数据库没有重置自动增量id。 手动使用夹具或创建对象也存在同样的问题。

@Before public void setUp() { Fixtures.deleteAllModels(); Fixtures.loadModels("data.yaml"); } 

如何解决这个问题呢?

启动您的播放应用,使用此url启动浏览器(如果您在本地运行播放应用):

 http://localhost:9000/@db 

输入你的h2 db,然后输入以下命令并运行:

 ALTER TABLE  ALTER COLUMN  RESTART WITH 1 

如果你想以编程方式执行此操作, Fixtures.executeSQL()可能会很有用

有关更多信息,请访问http://www.h2database.com/html/grammar.html#alter_table_alter

如果你使用Spring,我发现这篇博文建议使用@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)

这样每个测试都使用一个新的应用程序上下文,从而重置db增量。