Java 重置h2中的自动增量

Java 重置h2中的自动增量,java,playframework,h2,Java,Playframework,H2,我正在测试一个返回json响应的控制器,但是 第一次之后失败,因为h2数据库未重置 自动递增id。 使用装置或手动创建对象也有同样的问题 @Before public void setUp() { Fixtures.deleteAllModels(); Fixtures.loadModels("data.yaml"); } 如何解决此问题?启动您的play app,使用此url启动浏览器(如果您在本地运行play app): 输入h2 db,然后键入下面的命令并运行: ALTE

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

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

如何解决此问题?

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

输入h2 db,然后键入下面的命令并运行:

ALTER TABLE <table_name> ALTER COLUMN <column_name> RESTART WITH 1
ALTER TABLE ALTER COLUMN用1重新启动
如果希望以编程方式执行此操作,
Fixtures.executeSQL()
可能会很有用


有关更多信息,请检查如果您使用的是Spring,我发现这建议使用
@DirtiesContext(classMode=DirtiesContext.classMode.AFTER\u EACH\u TEST\u方法)


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

在表上执行SQL脚本:

TRUNCATE TABLE my_table RESTART IDENTITY;
ALTER SEQUENCE my_table_id_seq RESTART WITH 1;
H2应为1.4.200或更高版本


请参见

这将使测试速度非常慢
TRUNCATE TABLE my_table RESTART IDENTITY;
ALTER SEQUENCE my_table_id_seq RESTART WITH 1;