我试图在search.maven.org上从3.3.2版本升级到3.4.0版本的spring data neo4j,但构建现在给出以下异常:
AnnotationFormatError: Invalid default: public abstract java.lang.Class org.springframework.data.neo4j.config.EnableNeo4jRepositories.repositoryBaseClass()
应用程序在3.3.2中运行良好。
下面是配置类:@Configuration
@EnableNeo4jRepositories(basePackages = { "it.data.neo4j.repository" })
@EnableTransactionManagement
@ComponentScan(basePackages = { "it.data.neo4j.service" })
public class Neo4JRepositoryConfiguration extends Neo4jConfiguration {
private static Logger logger = LoggerFactory.getLogger(Neo4JRepositoryConfiguration.class);
public static final String URL = "http://localhost:7474/db/data/";
public static final String LOGIN = "neo4j";
public static final String PASSWORD = "xxxx";
Neo4JRepositoryConfiguration() {
setBasePackage("it.data.neo4j.domain");
}
@Bean
GraphDatabaseService graphDatabaseService() {
return new SpringCypherRestGraphDatabase(URL, LOGIN, PASSWORD);
}
@Autowired
LocalContainerEntityManagerFactoryBean entityManagerFactory;
@Override
public PlatformTransactionManager neo4jTransactionManager(
GraphDatabaseService graphDatabaseService) {
return new ChainedTransactionManager(
new JpaTransactionManager(entityManagerFactory.getObject()),
new JtaTransactionManagerFactoryBean(graphDatabaseService).getObject());
}
}
依赖项是:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-neo4j</artifactId>
<version>3.4.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-neo4j-rest</artifactId>
<version>3.4.0.RELEASE</version>
</dependency>
最有可能与spring-data-commons.jar冲突的类路径依赖
确保类路径上的所有jar都使用相同版本的spring-data-commons。
在我的情况下,我有两个jar引用spring-data-commons.jar 1.10和1.11,这导致了这个问题。
您的包it.data.neo4j.repository
包含JPA和Neo4j存储库吗?如果是这样,您可能需要将它们隔离到单独的包中。
此外,Spring Data Neo4j version 4与以前的版本相比是一个重大的转变,并且涉及到一些代码迁移,您的实际应用程序代码可能需要调整以与SDN4兼容:
http://docs.spring.io/spring-data/neo4j/docs/4.0.0.RELEASE/reference/html/迁移