【发布时间】: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