2016-07-29 556 views
1

我有一個簡單的彈簧引導項目與JPA存儲庫存儲用戶和AUTHORITIES信息彈簧安全和存儲LOG事件。該項目工作正常。現在我想添加包含neo4j的額外功能。我將spring-data-neo4j添加到項目中,併爲neo4j創建了我的配置。混合彈簧數據jpa +彈簧數據neo4j。 users服務

@EnableTransactionManagement 
@EnableScheduling 
@Configuration 
@EnableNeo4jRepositories(basePackages = "com.mycompany.analytics.graph.repository") 
public class Neo4jConfig extends Neo4jConfiguration { 

    public static final String URL = System.getenv("NEO4J_URL") != null ? System.getenv("NEO4J_URL") : "http://neo4j:[email protected]:7474"; 

    @Bean 
    public org.neo4j.ogm.config.Configuration getConfiguration() { 
     org.neo4j.ogm.config.Configuration config = new org.neo4j.ogm.config.Configuration(); 
     config 
       .driverConfiguration() 
       .setDriverClassName("org.neo4j.ogm.drivers.http.driver.HttpDriver") 
       .setURI(URL); 
     return config; 
    } 

    @Override 
    public SessionFactory getSessionFactory() { 
     return new SessionFactory(getConfiguration(), "com.mycompany.analytics.graph.repository"); 
    } 
} 

以前我有我的用戶存儲庫來存儲用戶信息,關係數據庫

/** 
* Spring Data JPA repository for the User entity. 
*/ 
public interface UserRepository extends JpaRepository<User, Long> { 
    Optional<User> findOneByActivationKey(String activationKey); 
    List<User> findAllByActivatedIsFalseAndCreatedDateBefore(ZonedDateTime dateTime); 

    Optional<User> findOneByResetKey(String resetKey); 

    Optional<User> findOneByEmail(String email); 

    Optional<User> findOneByLogin(String login); 

    Optional<User> findOneById(Long userId); 

    @Override 
    void delete(User t); 
} 

在UserService林注射庫

@Service 
@Transactional 
public class UserService { 
.... 

    @Inject 
    private UserRepository userRepository; 
.... 

當我跑我得到了應用和錯誤,因爲用戶存儲庫試圖在JPA存儲庫中使用Neo4j數據庫。

是否有任何選項可以整合spring-data-neo4j而不影響現有的JPA基礎結構。

由於

+0

除了StackOverflow,Neo4j社區還擁有一個Slack Channel--強烈建議加入。詳情:https://neo4j.com/blog/public-neo4j-users-slack-group/ –

回答

3

Spring Data Commons參考指南包含關於如何使用兩個彈簧數據項目,如兩個Neo4j的和JPA,同時指令。看看你如何去做。如果您遇到任何問題,請告知我們。

+0

感謝您的提示! – silvestrelosada

+0

根據文檔,這是足夠的添加此: @EnableJpaRepositories(basePackages =「com.mycompany.repositories.jpa」) @ EnableNeo4jRepositories(basePackages =「com.mycompany.repositories.neo4j」) 我試過了,但jpa存儲庫使用neo4j配置 – silvestrelosada

+0

現在我可以使用這兩個存儲庫。然而,jpa版本庫給我提供了一些交易問題,並且存在一些初始化異常。 **未能延遲初始化角色集合:com.company.analytics.domain.User.authorities,無法初始化代理 - 無會話** – silvestrelosada