hibernate - Play Framework 2.4 中的 Play Evolutions 和 JPA

标签 hibernate jpa playframework playframework-2.4 playframework-evolutions

我将 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/

相关文章:

java - 如何使用 jpa 规范向子查询添加和构建动态谓词?

json - Spark 运行错误 java.lang.NoClassDefFoundError : org/codehaus/jackson/annotate/JsonClass

scala - 如何在 Play 框架中处理可选查询参数

Java.lang.NoSuchMethodError : org. hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session after update to hibernate 4

java - Criteria.DISTINCT_ROOT_ENTITY 不会阻止重复的对象

java - Spring Data JPA 规范 - 不同 + 连接中按列排序

java.lang.IllegalArgumentException : Named query not found.(实体管理器未创建 NamedQuery)

java - 为什么使用 session.get 加载对象不会在 session 结束时保留对象修改?

mysql - java.sql.SQLException : target: commerce. 0.primary:vttablet:rpc 错误:代码 = InvalidArgument desc = 未知系统变量 'query_cache_size'

java - Play-为什么会出现PersistenceException?