Question: I'm testing a controller that returns a json response but the tests
fail after the first time because the h2 database does not reset the
auto increment id.
Using fixtures or creating objects manually has a same problem.

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

```

How to solve this problem?

Answer: 
Start your play app, fire up browser with this url (if you run play app locally): 

```
http://localhost:9000/@db

```

Enter your h2 db, and type the command below and run:

```
ALTER TABLE <table_name> ALTER COLUMN <column_name> RESTART WITH 1

```

If you'd like to do this programmatically, `Fixtures.executeSQL()` might be useful

For more information, check <http://www.h2database.com/html/grammar.html#alter_table_alter>
If you are using Spring, I found this [blog post](https://www.petrikainulainen.net/programming/spring-framework/spring-from-the-trenches-resetting-auto-increment-columns-before-each-test-method/) which suggests using `@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)`

So that each test uses a new application context, thereby resetting the db increments.