0

我将我的游戏框架 jpa 设置如下:

在 application.conf 中:

db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"
db.default.user=sa
db.default.password=""
applyEvolutions.default=true
db.default.jndiName=DefaultDS
jpa.default=defaultPersistenceUnit

持久性.xml:

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
             version="2.0">

    <persistence-unit name="defaultPersistenceUnit" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <non-jta-data-source>DefaultDS</non-jta-data-source>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
            <property name="hibernate.hbm2ddl.auto" value="update"/>
        </properties>
    </persistence-unit>

</persistence>

我开始测试是这样的:

start(fakeApplication(inMemoryDatabase(), globalSettings));

运行这个项目运行良好,但由于缺乏数据库演化,测试它失败了!

如何在测试环境中启用 Play Framework 进化?

我正在使用休眠 3.6

4

2 回答 2

0

在你的application.conf

applyDownEvolutions.default=true

请注意,如果您在生产中使用相同的 conf 文件。

于 2015-03-12T09:39:35.870 回答
0

尝试将 hibernate.hbm2ddl.auto 设置为“none”,因此您的进化应该正确应用。

我猜在进化插件之前休眠“假设控制”,这会导致问题。您可以尝试修改插件加载顺序(JPAPlugin 与 EvolutionPlugin),看看它是否有任何不同。

于 2015-05-15T00:30:47.400 回答