当前位置: 首页 > 知识库问答 >
问题:

混合Spring数据jpaSpring数据neo4j。用户服务

宣望
2023-03-14

我有一个带有JPA存储库的简单Spring Boot项目,用于存储用于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);
}

在用户服务Im上注入存储库

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

    @Inject
    private UserRepository userRepository;
....

当我运行应用程序时,我得到一个错误,因为用户存储库试图使用JPA存储库中的Neo4j数据库。

是否有任何选择来集成Spring数据neo4j而不影响现有的JPA基础结构。

谢谢

共有1个答案

宰父深
2023-03-14

Spring数据共享资源的参考指南包含有关如何同时使用两个Spring数据项目(例如Neo4j和JPA)的说明。看看你是怎么做到的。如果您遇到任何问题,请告诉我们。

 类似资料:
  • 我正在实验/学习Spring数据neo4j。我有一个非常简单的应用程序,可以存储来自推特的推文。请参阅下面的片段。 问题是,存储哈希标签的最佳方式是什么,这样我就可以快速获取它们所属的推文?我能想到的是要么在Set上使用@索引,要么实际上创建一个单独的标签NodeEntity,并在它和推文之间建立关系。我找不到在NodeEntity中索引集合的任何留档,所以我不确定是否在set对象上创建了索引,或

  • 数据混合是Tableau的强大功能。它用于从多个数据源中的相关数据分析单个视图中的数据。 例如: 假设销售数据存在于关系数据库中,而销售目标数据存在于Excel工作表中。 现在,为了将实际销售额与目标销售额进行比较,根据共同维度混合数据以访问“销售目标”度量标准。 数据混合中涉及的两个数据源被称为主数据源和辅助数据源。 在主数据源和辅助数据源之间构建左连接,其中所有数据行来自主数据行,仅匹配来自辅

  • 我开始使用Neo4j和Spring Data Neo4j的项目。我希望我的程序使用已经包含我的数据的本地数据库(而不是每次启动时加载数据),因为我有很多数据需要加载到数据库中。为了实现这个目标,我尝试设置一个用我的数据填充数据库的测试用例。但是,在我的测试完成后,数据库中的数据似乎不会持久:我使用neo4j控制台/shell查看数据库,发现它是空的。 我已经构建了一个小的例子项目,也不工作。任何对

  • 包org.springframework.data.neo4j.annotation中的注释@Query提供了某些计数属性,如CountQuery、CountQueryName。 有人能解释一下这些的用法吗?更具体地说,我写了一个查询来获取关于一个主题的帖子。查询结果将被分页。下面的查询工作正常,并给我的结果。 现在我还需要结果的总数,我是否必须为此编写另一个查询,或者是否有一种方法可以容纳计数查

  • 在SDN 6中,@Deapth注释被删除,在最新的6.0中也是如此。3、增加了对双向关系的支持。早些时候,它在保持相同节点实体之间的双向关系的同时提供StackOverflow。例如A-follows-

  • 希望我的团队在这里做一些愚蠢的事情,但是,使用SDN 3.3对抗Neo4j 2.1.6,当我试图获取一个特定的实体时,我会得到一个持久性实体转换异常。 数据模型是这样的: 有一个基本节点实体模型,称之为a。它在SDN中是抽象的(它实际上是从其他几个类派生而来的,但根是@NodeEntity) 我正在执行一个Cypher查询,它有效地查找标签来自A(应该包括B和C)的节点。Java代码看起来有点像这