2016-07-29 161 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