【问题标题】:Ebean enhancement ignores a modelEbean增强忽略模型
【发布时间】:2015-04-22 19:03:06
【问题描述】:

我们正在使用avaje-agentloader 来增强我们的 ebean。所有的 ebeans 都在同一个包中。我们在项目中包含了加载器、代理和基础 ebean 库(通过 sbt):

"org.avaje" % "avaje-agentloader" % "1.1.2",
"org.avaje.ebeanorm" % "avaje-ebeanorm" % "4.5.5",
"org.avaje.ebeanorm" % "avaje-ebeanorm-agent" % "4.5.2",

但是,当加载器运行增强功能时,它会跳过一个 ebean。

每个 ebean 都用 @Entity 注释并扩展 com.avaje.ebean.Model。增强的和没有增强的似乎没有区别。没有额外的包含或扩展等。

基本上,我想知道过去是否有人遇到过这个问题,或者有任何见解。

我们尝试过的事情:

  • 通过serverConfig.setClasses(...)指定要增强的实际类
  • 通过serverConfig.addPackage(...)setPackages(...) 指定要分析/增强的包
  • 根本不指定,让加载程序全部分析。
  • 我们在Transformer.transform 处设置了一个断点,而有问题的bean 从未真正命中。

注意:如果我们通过命令行上的代理加载器或通过 maven 插件或 sbt 使用 ebean 代理,它可以工作。

【问题讨论】:

  • 我应该澄清一下,它似乎每次都忽略 SAME 模型。包中有 11 个 bean/模型,每次都跳过同一个(不是第一个或最后一个)。

标签: java sbt ebean


【解决方案1】:

好的,所以我也在 Google 网上论坛的 Ebean group 上发布了这个消息,Rob Bygrave 做出了回应,解释了一些事情。 (阅读他的回复here

  1. serverConfig.setXXX 与 ebean 增强无关。
  2. 看起来 bean 是在代理加载之前加载的。

他是对的,确实有问题的模型/bean 早在代理之前就已加载。所以我们正在追查原因。

因此,问题在于代理不会增强已由 ClassLoader 加载的 bean(这是有道理的)。他确实提到我们可以“更改 Ebean 代理以也支持'类重新定义'”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-08
    相关资源
    最近更新 更多