【问题标题】:Play Framework JPA - Entity not foundPlay Framework JPA - 找不到实体
【发布时间】:2017-03-13 18:25:57
【问题描述】:

我目前正在尝试将我的 Play 应用程序作为已部署的应用程序运行。如果我在本地运行应用程序,它有一个 JPA 集成可以正常工作。但是,如果我尝试在生产模式下运行,我目前会收到此错误:

Caused by: java.lang.IllegalArgumentException: Not an entity: class 
      com.mm.entities.Message
      at org.hibernate.jpa.internal.metamodel.MetamodelImpl.entity(MetamodelImpl.java:194)
      at org.hibernate.jpa.criteria.QueryStructure.from(QueryStructure.java:124)
      at org.hibernate.jpa.criteria.CriteriaQueryImpl.from(CriteriaQueryImpl.java:156)
      at com.mm.helpers.QueryBuilder.<init>(QueryBuilder.java:24)
      at com.mm.persistence.MessagePersistence.getByReceiver(MessagePersistence.java:49)
      at com.mm.controllers.Messages.getMessageByReceiver(Messages.java:47)
      at router.Routes$$anonfun$routes$1$$anonfun$applyOrElse$1$$anonfun$apply$1.apply(Routes.scala:91)
      at router.Routes$$anonfun$routes$1$$anonfun$applyOrElse$1$$anonfun$apply$1.apply(Routes.scala:91)
      at play.core.routing.HandlerInvokerFactory$$anon$4.resultCall(HandlerInvoker.scala:157)
      at play.core.routing.HandlerInvokerFactory$$anon$4.resultCall(HandlerInvoker.scala:156)

有人知道它的来源吗?我在persistence.xml 中的持久化单元看起来像这样:

<persistence-unit name="defaultPersistenceUnit" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <non-jta-data-source>MMChat</non-jta-data-source>
    <properties>
        <property name="hibernate.archive.autodetection" value="class" />
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
        <property name="hibernate.hbm2ddl.auto" value="create-drop" />
    </properties>
</persistence-unit>

【问题讨论】:

  • 我没有看到“找不到实体”。我实际上看到“不是实体类”......那么这个类 Message 是一个实体类吗?因为你不发布!
  • 是的,你在写,Message 类有注解...

标签: java hibernate jpa playframework


【解决方案1】:

对于生产模式,每个与 DB-entity 相关的类都应该以完整的包名添加到 persistence.xml 中。 DB-entity 相关类是实体、可嵌入类或属性转换器类中的任何一个。 在您的情况下,这应该是这样的:

<persistence-unit name="defaultPersistenceUnit" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <non-jta-data-source>MMChat</non-jta-data-source>
    <class>com.mm.entities.Message</class>
    <properties>
    ...
    </properties>
</persistence-unit>

【讨论】:

    猜你喜欢
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    相关资源
    最近更新 更多