Как заставить Spring Data Neo4j и Spring Data JPA работать вместе?
У меня есть приложение, которое выполняет некоторые пакетные задания, используя MySQL и, через REST, версию сервера Neo4j.
Я могу'Я не могу понять, как заставить их работать вместе: я могу заставить их работать, но не одновременно. Сообщения, которые ямы обнаружили, что не относятся к серверной версии Neo4j, и, возможно, это 'Там, где проблема, так как все остальное мне кажется нормальным.
Моя конфигурация:
JpaConfig
@Configuration
@EnableTransactionManagement(order=Ordered.HIGHEST_PRECEDENCE)
@PropertySource("META-INF/database.properties")
@ImportResource("classpath*:META-INF/repository.xml")
public class JpaConfig {
@Autowired
Environment env;
@Bean(destroyMethod = "close")
public DataSource dataSource() {
DataSource dataSource = new DataSource();
dataSource.setDriverClassName(env.getProperty("database.driverClassName"));
dataSource.setUrl(env.getProperty("database.url"));
dataSource.setUsername(env.getProperty("database.username"));
dataSource.setPassword(env.getProperty("database.password"));
dataSource.setTestOnBorrow(true);
dataSource.setTestOnReturn(true);
dataSource.setTestWhileIdle(true);
dataSource.setTimeBetweenEvictionRunsMillis(1800000);
dataSource.setNumTestsPerEvictionRun(3);
dataSource.setMinEvictableIdleTimeMillis(1800000);
dataSource.setValidationQuery("SELECT 1");
return dataSource;
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean entityManagerFactory = new LocalContainerEntityManagerFactoryBean();
entityManagerFactory.setDataSource(dataSource());
entityManagerFactory.setPackagesToScan("it.smartblue.mcba.domain");
entityManagerFactory.setJpaDialect(new HibernateJpaDialect());
Map jpaProperties = new HashMap();
jpaProperties.put("hibernate.connection.charSet", "UTF-8");
jpaProperties.put("hibernate.ejb.naming_strategy", "org.hibernate.cfg.EJB3NamingStrategy");
jpaProperties.put("hibernate.bytecode.provider", "javassist");
jpaProperties.put("hibernate.dialect", "org.hibernate.dialect.MySQL5InnoDBDialect");
entityManagerFactory.setJpaPropertyMap(jpaProperties);
entityManagerFactory.setPersistenceProvider(new HibernatePersistence());
return entityManagerFactory;
}
@Bean
public PlatformTransactionManager transactionManager() {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(entityManagerFactory().getObject());
return transactionManager;
}
@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
return new PersistenceExceptionTranslationPostProcessor();
}
}
Neo4j.xml
С этой конфигурацией Mysql работает отлично, но Neo4j неt сохранить любое свойство в узлах, которые оно создает.
Если я удалю атрибутentityManagerFactory="entityManagerFactory"
Neo4j работает, но я могунаписать в MySQL.
Мои методы обслуживания помечены@Transactional
или же@Neo4jTransactional
не оба одновременно.
Внутри классаorg.springframework.data.neo4j.rest.SpringRestGraphDatabase
дляgraphDatabaseService
боб I 'мы нашли:
@Override
public Transaction beginTx() {
// return super.beginTx();
return new NullTransaction();
}
@Override
public TransactionManager getTxManager() {
return new NullTransactionManager();
}
Может быть это'работа в процессе? Или, может быть, я что-то упустил ... Я
м с использованием Spring 3.1.2, Hibernate 4.1.4. Вот часть моего pom.xml.
org.springframework.data
spring-data-jpa
1.2.0.RC1
org.springframework.data
spring-data-neo4j
2.1.0.RC4
org.springframework.data
spring-data-neo4j-rest
2.1.0.RC4
org.springframework.data
spring-data-neo4j-cross-store
2.1.0.RC4