我将 Play 项目从版本 2.3.4 迁移到 2.4.2。这些项目使用 JPA(Hibernate)和 Evolutions。我有一个初始的 Evolutions SQL 脚本,它用一些示例数据填充数据库。这个脚本现在不再工作了,因为 Evolutions 脚本现在在 Hibernate 生成表之前执行,这显然会导致错误。这是一种理想的行为吗?有什么办法可以改变执行顺序吗?
最佳答案
进化是关于通过普通 SQL 脚本创建和更新数据库。所以如果你使用一些自己生成数据表的框架,比如hibernate,那么你需要关闭evolutions(或者关闭自动生成并只使用evolutions)
启动时填充数据库
我在 Cassandra 上有一个类似的问题,我所做的 - 只需创建一个读取 CQL 文件并执行它的代码,然后在创建实际数据表后运行此代码。
正如我看到的 Hibernate 已经有这个功能 - 您需要将自定义 SQL 代码放入 /import.sql
类路径根目录中的文件:
If a file named import.sql exists in the root of the class path ('/import.sql') Hibernate will execute the SQL statements read from the file after the creation of the database schema.
关于hibernate - Play Framework 2.4 中的 Play Evolutions 和 JPA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31502061/