【发布时间】:2015-07-30 06:43:44
【问题描述】:
我正在使用带有 jpa mysql 的 play 2.3。我的数据库中有一个管理员,应该在创建数据库时最初创建。我找到了关于它的this 线程。所以我的persistence.xml 看起来像
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
version="2.1">
<persistence-unit name="defaultPersistenceUnit" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<non-jta-data-source>DefaultDS</non-jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
<property name="hibernate.hbm2ddl.auto" value="create"/>
<property name="javax.persistence.sql-load-script-source"
value="META-INF/sql/data.sql"/>
</properties>
</persistence-unit>
</persistence>
然后我在META-INF/sql/data.sql创建了一个sql文件
INSERT INTO `roles` (`id`, `name`) VALUES(1, 'supersuperadmin')
但是当我运行我的应用程序时,它会创建数据库,但它会在roles 表中插入任何内容。
我也尝试使用与上述相同的数据创建 evolutions/default/1.sql 或 2.sql 文件,但它什么也没显示。
所以我做错了什么。如何在我的数据库中插入初始数据?
【问题讨论】:
-
您可以使用 Evolutions 脚本插入数据。
-
您也可以在 Global 中使用 onStart 方法,并在每次应用程序启动时检查您的管理员是否已经在您的数据库中创建。
-
@MonCalamari 我试过检查我的编辑是否有效
-
@Kris 你能举个例子说明如何从
Global.onStart()运行那些插入sql
标签: mysql sql jpa playframework sql-insert