【问题标题】:cannot import play.db.jpa.Model into my model无法将 play.db.jpa.Model 导入我的模型
【发布时间】:2012-06-28 18:59:40
【问题描述】:

我无法以某种方式将play.db.jpa.Model 库导入我的模型,它只能找到play.db.ebean.Model。有没有办法导入这个?

谢谢

【问题讨论】:

    标签: jpa model playframework


    【解决方案1】:

    那是因为play.db.jpa.Model 是 Play 1.x 而play.db.ebean.Model 是 Play 2.x。

    要在 Play 2.x 中使用 JPA,请参阅 http://www.playframework.org/documentation/2.0/JavaJPA

    【讨论】:

    • 哦,真的吗?但是为什么我找不到Model的find()方法呢?
    • 现在我必须自己实现 find 方法吗?喜欢..public static User find(Long id){return JPA.em().find(User.class, id); }
    • 是的……它是 Play 2.x 的优点/缺点之一……它的魔力较小,所以工作量更大,但因为它的魔力较小,所以发生的事情更清晰。
    【解决方案2】:

    play.db.jpa.Model 类从 play 2.0 开始不可用。我发现这个问题的解决方法是:

    • YourProject/conf/application.conf 中,声明JPA 配置:

    db.default.driver=org.h2.Driver
    db.default.url="jdbc:h2:mem:play"
    db.default.jndiName=DefaultDS

    还有持久化单元:

    jpa.default=defaultPersistenceUnit

    • 在 YourProject/conf/ 中创建一个名为 META-INF 的新包

    • 在这个包中创建一个名为persistence.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"/>
                </properties>
            </persistence-unit>
    
    
    </persistence>
    
    • YourProject/project/Build.scala修改依赖添加如下:

    val appDependencies = Seq(
    // 在此处添加您的项目依赖项,
    javaCore,
    javaJdbc,
    javaJpa,
    "org.hibernate" % "hibernate-entitymanager" % "4.2.1.Final"
    )

    如果您不打算使用 Ebean,也可以禁用它:

    val main = play.Project(appName, appVersion, appDependencies).settings(
      ebeanEnabled := false 
    )
    
    • 之后,在您的项目上运行 play eclipse 并刷新。

    希望这会有所帮助。

    【讨论】:

    • "jpa.default=defaultPersistenceUnit" in application.conf 是我花了几个小时试图弄清楚的部分。除了在 JPAPlugin 的源代码中,还没有发现它记录在任何地方。 :(
    • @RodneyGitzel 它在 JPA 下的 2.2 文档中:playframework.com/documentation/2.2.x/JavaJPA,请参阅“创建持久性单元”的最后一部分
    • @chris 不幸的是它被排除在 2.1 文档之外:playframework.com/documentation/2.1.x/JavaJPA
    • @RodneyGitzel 哦,真可惜。 +1 - 希望这可以节省其他人的时间/理智!
    猜你喜欢
    • 2011-12-12
    • 2021-02-11
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 2021-03-21
    • 2018-04-19
    • 2016-08-13
    • 1970-01-01
    相关资源
    最近更新 更多