【问题标题】:Time Weaver not work in Spring Boot 2 for EclipselinkTime Weaver 在 Spring Boot 2 for Eclipse 中不起作用
【发布时间】:2018-08-27 22:13:01
【问题描述】:

我正在使用 Spring Boot 2 + EclipseLink 2.7.1,当我启动 Spring 平台时出现 TimeWeaving 异常。

我遵循了 Spring + EclipseLink 的最佳实践,它之前在 Spring Boot 1.5.8 上工作过。在迁移到 2.0 之后,我开始在启动时遇到有关 Weaving 的问题:

如下所示的几个问题和消息: [EL Warning]: metadata: 2018-03-19 21:44:40.176--ServerSession(1687624275)--Reverting the lazy setting on the OneToOne or ManyToOne attribute [image] for the entity class

正在使用以下配置:

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class EclipseLinkJPAConfiguration extends JpaBaseConfiguration {

    protected EclipseLinkJPAConfiguration(DataSource dataSource, JpaProperties properties,
            ObjectProvider<JtaTransactionManager> jtaTransactionManager,
            ObjectProvider<TransactionManagerCustomizers> transactionManagerCustomizers) {
        super(dataSource, properties, jtaTransactionManager, transactionManagerCustomizers);
        // TODO Auto-generated constructor stub
    }

    @Override
    protected AbstractJpaVendorAdapter createJpaVendorAdapter() {
        EclipseLinkJpaVendorAdapter adapter = new EclipseLinkJpaVendorAdapter();
        return adapter;
    }

    @Override
    protected Map<String, Object> getVendorProperties() {
        HashMap<String, Object> map = new HashMap<String, Object>();
        map.put(PersistenceUnitProperties.TARGET_DATABASE, TargetDatabase.MySQL);
        map.put(PersistenceUnitProperties.WEAVING, "true");
        return map;
    }

}

我的启动行命令是: -Xms656m -Xms656m -Djava.security.egd=file:/dev/./urandom -javaagent:.../.m2/repository/org/springframework/spring-instrument/5.0.4.RELEASE/spring-instrument-5.0.4.RELEASE.jar

我确保删除了 Spring JPA 包上的休眠依赖项。

无论如何,一切都是一样的,但是,当 EclipseLink 编织打开时,似乎编织不适用于包。

我尝试关闭 EclipseLink WEAVING="off" 并将 AspectJ 直接转为 spring,但是得到了相同的结果。

当我再次按对象执行任何查询时,我的 @MappedSuperclass 会出现以下错误: java.lang.NoSuchMethodError: xxx.base.BaseEntity._persistence_set

升级到 Spring Boot 2 后是否有人遇到过相同的行为? (我考虑过静态编织,但是我使用的是注解而不是 persistence.xml 文件)

更新 1 经过几天的调查,我在 EclipseLink 中打开了 FINEST 调试,我发现我的 BaseEntity 没有发生 Weaving(它发生在其他一些类中)。我的 BaseEntity 是一个 @MappedSuperclass。

我检查了 EclipseLink 启动过程,它列出了大约 41 个要编织的类。然而,除了 BaseEntity 被列为被放弃之外,当 TomCat 生命周期启动 DB 连接时,引导过程不会将其拾取。仍在调查中。

【问题讨论】:

    标签: java spring jpa eclipselink


    【解决方案1】:

    随着 Spring Boot 2.0.1.RELEASE 的发布,该问题已得到解决。

    在我将 pom.xml 从 2.0.0.RELEASE 移动到 2.0.1.RELEASE 后,它解决了这个问题。

    现在,正在编织所有实体。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-26
      • 1970-01-01
      • 1970-01-01
      • 2019-11-27
      • 1970-01-01
      • 2018-08-28
      • 1970-01-01
      • 2011-08-30
      相关资源
      最近更新 更多