Playframework Fixtures.deleteDatabase()不会重置自动增量

Playframework Fixtures.deleteDatabase()不会重置自动增量,playframework,Playframework,我是新手!这真是个新手问题,但我就是绕不开它 我浏览了play scala的教程(yabe),并在第二轮被阻止 it should "retrieve Posts with author" in { User.create(User(NotAssigned, "bob@gmail.com", "secret", "Bob", false)) Post.create(Post(NotAssigned, "My first post", "Hello world", new Date,

我是新手!这真是个新手问题,但我就是绕不开它

我浏览了play scala的教程(yabe),并在第二轮被阻止

it should "retrieve Posts with author" in {

  User.create(User(NotAssigned, "bob@gmail.com", "secret", "Bob", false)) 
  Post.create(Post(NotAssigned, "My first post", "Hello world", new Date, 1))

  Post.count().single() should be (1)

  val posts = Post.find("author_id={id}").on("id" -> 1).as(Post*)

  posts.length should be (1)

  val firstPost = posts.headOption

  firstPost should not be (None)
  firstPost.get.author_id should be (1)
  firstPost.get.title should be ("My first post")
  firstPost.get.content should be ("Hello!")
}
问题是每次运行此测试时,都会调用Fixture.deleteAll(),并且数据库应该为空。但是自动增量不会重置,因此在第一行创建的用户对象的ID大于1,禁止创建Post对象(author_ID=1)

我已将%test config设置为%test.jpa.ddl=create drop


我的问题是,如果我想在每次测试之前真正重置%test数据库,我该怎么办?

不要将“1”传递给后期创建方法,而是传递上一个用户id。任何测试都不应依赖于这样的硬编码约束,因为它们与程序无关(您不关心用户的id,只关心帖子引用了该id)

比如:

 val user = User.create(User(NotAssigned, "bob@gmail.com", "secret", "Bob", false)) 
 Post.create(Post(NotAssigned, "My first post", "Hello world", new Date, user.id))
 [... replace all '1' by user.id ...]