1

Ich habe ein einfaches Spring-Boot-Projekt mit JPA-Repositories, um USER- und AUTHORITIES-Informationen für Spring-Security zu speichern und LOG-Events zu speichern. Das Projekt funktioniert gut. Jetzt möchte ich zusätzliche Funktionalität hinzufügen, die neo4j beinhaltet. Ich habe spring-data-neo4j zum Projekt hinzugefügt und meine Konfiguration für neo4j erstellt.Mischfeder Daten jpa + Federdaten neo4j. userservice

@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"); 
    } 
} 

Vorher hatte ich zum Speichern von Benutzerinformationen meine Benutzerrepository auf relationale Datenbank

/** 
* 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); 
} 

Auf Userservice Im den Repository Injektion

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

    @Inject 
    private UserRepository userRepository; 
.... 

Wenn ich die Anwendung ausführen ich erhalte und Fehler, weil das Benutzerrepository versucht, die Neo4j-Datenbank in JPA-Repositorys zu verwenden.

Gibt es eine Möglichkeit, spring-data-neo4j ohne Auswirkungen auf die bestehende JPA-Infrastruktur zu integrieren?

Dank

+0

Neben StackOverflow hostet die Neo4j Community einen Slack Channel - sehr zu empfehlen. Details: https://neo4j.com/blog/public-neo4j-users-slack-group/ –

Antwort

3

Referenzhandbuch für Spring Data Commons enthält Anweisungen, wie Projekte zwei Feder Daten verwenden, wie beide Neo4j und JPA gleichzeitig. Schau, wie du damit gehst. Lassen Sie uns wissen, wenn Sie Probleme haben.

+0

Danke für den Tipp !! – silvestrelosada

+0

nach mit der Dokumentation ist es genug, um das Hinzufügen dieser: @EnableJpaRepositories (basePackages = "com.mycompany.repositories.jpa") @ EnableNeo4jRepositories (basePackages = "com.mycompany.repositories.neo4j") ich mit ihm versucht, aber die Jpa-Repository ist mit neo4j konfiguriert – silvestrelosada

+0

Jetzt kann ich beide Repositories verwenden. Das jpa-Repository gibt mir jedoch einige Probleme mit den Transaktionen, und es gibt layzy-Initialisierungsausnahmen. ** versäumt, eine Sammlung von Rolle langsam zu initialisieren: com.company.analytics.domain.User.authorizities, konnte Proxy nicht initialisieren - keine Sitzung ** – silvestrelosada

Verwandte Themen