【问题标题】:EBean: java.lang.IllegalStateException: Bean class models.User is not enhanced?EBean:java.lang.IllegalStateException:Bean 类models.User 没有增强?
【发布时间】:2016-02-12 20:12:13
【问题描述】:

我有一个 Play 2.4.6 应用程序,直到两天前都可以正常工作。从昨天开始,我收到了这个错误:

[[37minfo] - application - Creating Pool for datasource 'default'
[[31merror] - com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager - Error in deployment
java.lang.IllegalStateException: Bean class models.User is not enhanced?
    at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.setEntityBeanClass(BeanDescriptorManager.java:1405) ~[avaje-ebeanorm-6.8.1.jar:na]

我已经寻找解决方案,但我仍然收到该错误。甚至,我尝试使用插件 2.0

addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "2.0.0") 

我该如何解决?

提前谢谢你,

更新:最后我重写了代码,去掉了EBean,开始使用Play Framework的数据库池和JDBC的PreparedStatement。工作正常。我将把这个问题留在这里,希望对其他人有所帮助。

【问题讨论】:

    标签: mysql playframework playframework-2.0 ebean


    【解决方案1】:

    检查以下内容:

    1. 确保在 User 类上指定 @Entity 注释。
    2. 确保 application.conf 为您的数据源配置了 ebean 包:ebean.default=["models.*"]
    3. 确保 addSbtPlugin("com.typesafe.sbt" % "sbt-play-enhancer" % "1.1.0") 在您的 plugin.sbt 文件中。
    4. 确保您在 build.sbt 中启用了 PlayEbean:lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean)

    【讨论】:

    • 我检查了所有这些。无论如何,谢谢。
    • 您使用的是哪个版本的 Play?是否有任何其他可能同时发生的变化?
    • 播放 2.4.6、Scala 2.11.6、Sbt 0.13.9、PlayEBean 1.0.0。我也用 PlayEBean 2.0.0 测试过...
    • 您可以查看最新的 sbt-play-enhancer 版本from here
    【解决方案2】:

    如果你tried all of the given solutionscouldn't解决了问题,请检查你项目的JDK版本。

    Java11 存在某种问题。 试试 Java8 或更低版本。

    【讨论】:

    • 这对我来说是个问题。我试图让一个旧项目在带有 Java 15 的新 M1 Mac 上运行。如 github.com/playframework/play-enhancer/issues/23 所述,Play Enhancer 不适用于 JDK 11+。我让它在一台装有 Java 8 的旧机器上工作。
    【解决方案3】:

    如果你想用 ebean 再试一次,这对我有用

    https://www.youtube.com/watch?v=o4kmglM48Vc

    【讨论】:

    • 当我按照这个视频说明使用插件Ebean 4x enhancement时,它解决了我的问题,谢谢!
    【解决方案4】:

    根据您使用的 playframework 版本,您可能需要更改

    ebean.default= ["models.*", "another.models.*"]
    

    ebean.default="models.*, another.models.*"
    

    您可以在此处找到更多详细信息: https://github.com/playframework/play-ebean/issues/18

    除此之外,您还需要为需要 eBean 增强器的每个模块配置 playEbeanModels。例如:

        lazy val domainModel = (project in file("domain-model")).enablePlugins(PlayJava, PlayEbean).settings(Seq(
          libraryDependencies ++= Seq(
            "org.projectlombok" % "lombok" % "1.18.4",
            "com.h2database" % "h2" % "1.4.197",
            guice),
          playEbeanModels in Compile := Seq("com.mycompany.model.*"), // this should match the package name from above ebean.default="com.mycompany.model.*
          playEbeanDebugLevel := 4
    )
    

    也可以在这里找到一些解释: https://github.com/playframework/play-ebean/issues/25

    【讨论】:

      【解决方案5】:

      我会为其他没有上述方法的人放弃这个。

      在我的application.conf 文件中,我有以下内容

      ebean.default=["models.*"] 
      
      ebean.secondary=["ExternalModels.*"] 
      

      我越来越出名了

      Bean 类 ExternalModels.User 没有增强?错误

      为了解决这个问题,我所做的只是将我的 ExternalModels 包移动到一个新包中并将其命名为 ebean.secondary.ExternalModels

      然后,错误消失了!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-04
        • 1970-01-01
        • 2017-12-06
        相关资源
        最近更新 更多