2012-04-08 12 views
5

Estoy probando un controlador que devuelve una respuesta json pero las pruebas fallan después de la primera vez porque la base de datos h2 no restablece el autoincremento id. Usar accesorios o crear objetos manualmente tiene el mismo problema.Restablecimiento de autoincremento en h2

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

¿Cómo resolver este problema?

Respuesta

12

Comience su aplicación Play, el fuego de navegador con esta url (si se ejecuta la aplicación de juego a nivel local):

http://localhost:9000/@db 

Introduzca su base de datos h2, y escriba el siguiente comando y ejecute:

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

Si desea hacerlo mediante programación, Fixtures.executeSQL() podría ser útil

para obtener más información, consulte http://www.h2database.com/html/grammar.html#alter_table_alter

1

Si está utilizando la primavera, he encontrado este blog post lo que sugiere el uso de @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)

Para que cada prueba utiliza un nuevo contexto de aplicación, restableciendo de este modo los incrementos db.

Cuestiones relacionadas