混合弹簧数据jpa +弹簧数据neo4j。 userservice

时间:2016-07-29 10:11:11

标签: spring neo4j spring-data spring-data-jpa spring-data-neo4j

我有一个带有JPA存储库的简单spring引导项目,用于存储spring-security的USER和AUTHORITIES信息以及存储LOG事件。该项目工作正常。现在我想添加涉及neo4j的额外功能。我在项目中添加了spring-data-neo4j,并为neo4j创建了配置。

@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:movies@localhost: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基础架构。

由于

1 个答案:

答案 0 :(得分:3)

Spring Data Commons的参考指南包含有关如何同时使用两个弹簧数据项目(如Neo4j和JPA)的说明。看看你如何使用它。如果您遇到任何问题,请告诉我们。