Time Weaver在Eclipselink的Spring Boot 2中不起作用

时间:2018-03-19 11:06:30

标签: java spring jpa eclipselink

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

我已经遵循Spring + EclipseLink的最佳实践,并且之前在Spring Boot 1.5.8上工作。在迁移到2.0之后,我开始在启动时遇到问题:

以下几个问题和消息如下: [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 Packages上的hibernate依赖项。

无论如何,一切都是一样的,但是,当打开EclipseLink编织时,看起来编织对包不起作用。

我试图将EclipseLink WEAVING =&#34;关闭&#34;并且将AspectJ直接转换为弹簧,但是实现了相同的结果。

当我再次通过对象进行查询时,我从@MappedSuperclass中得到以下错误: java.lang.NoSuchMethodError: xxx.base.BaseEntity._persistence_set

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

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

我已经检查过EclipseLink启动过程,它列出了大约41个要编织的类。但是,除了BaseEntity被列为Waived之外,当TomCat生命周期启动数据库连接时,启动过程不会启动它。还在调查。

1 个答案:

答案 0 :(得分:0)

Spring Boot 2.0.1.RELEASE的发布解决了这个问题。

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

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