我正在使用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生命周期启动数据库连接时,启动过程不会启动它。还在调查。
答案 0 :(得分:0)
Spring Boot 2.0.1.RELEASE的发布解决了这个问题。
将我的pom.xml从2.0.0.RELEASE移动到2.0.1.RELEASE后,它解决了这个问题。
现在,所有实体都在编织。