commit
9033ec89d6
|
@ -37,18 +37,6 @@
|
||||||
<groupId>org.springframework.data</groupId>
|
<groupId>org.springframework.data</groupId>
|
||||||
<artifactId>spring-data-neo4j</artifactId>
|
<artifactId>spring-data-neo4j</artifactId>
|
||||||
<version>${spring-data-neo4j.version}</version>
|
<version>${spring-data-neo4j.version}</version>
|
||||||
<exclusions>
|
|
||||||
<exclusion>
|
|
||||||
<artifactId>commons-logging</artifactId>
|
|
||||||
<groupId>commons-logging</groupId>
|
|
||||||
</exclusion>
|
|
||||||
</exclusions>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.data</groupId>
|
|
||||||
<artifactId>spring-data-neo4j</artifactId>
|
|
||||||
<version>${spring-data-neo4j.version}</version>
|
|
||||||
<type>test-jar</type>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.voodoodyne.jackson.jsog</groupId>
|
<groupId>com.voodoodyne.jackson.jsog</groupId>
|
||||||
|
@ -86,6 +74,11 @@
|
||||||
<version>${neo4j-ogm.version}</version>
|
<version>${neo4j-ogm.version}</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.neo4j</groupId>
|
||||||
|
<artifactId>neo4j-ogm-embedded-driver</artifactId>
|
||||||
|
<version>${neo4j-ogm.version}</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.neo4j.test</groupId>
|
<groupId>org.neo4j.test</groupId>
|
||||||
<artifactId>neo4j-harness</artifactId>
|
<artifactId>neo4j-harness</artifactId>
|
||||||
|
@ -96,23 +89,17 @@
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-test</artifactId>
|
<artifactId>spring-test</artifactId>
|
||||||
<version>${spring-test.version}</version>
|
<version>${spring-test.version}</version>
|
||||||
<exclusions>
|
|
||||||
<exclusion>
|
|
||||||
<artifactId>commons-logging</artifactId>
|
|
||||||
<groupId>commons-logging</groupId>
|
|
||||||
</exclusion>
|
|
||||||
</exclusions>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<neo4j-java-driver.version>1.1.1</neo4j-java-driver.version>
|
<neo4j-java-driver.version>1.6.2</neo4j-java-driver.version>
|
||||||
<neo4j.version>3.1.0</neo4j.version>
|
<neo4j.version>3.4.6</neo4j.version>
|
||||||
<spring-data-neo4j.version>4.1.6.RELEASE</spring-data-neo4j.version>
|
<spring-data-neo4j.version>5.0.1.RELEASE</spring-data-neo4j.version>
|
||||||
<jackson-jsog.version>1.1</jackson-jsog.version>
|
<jackson-jsog.version>1.1</jackson-jsog.version>
|
||||||
<spring-boot.version>1.5.13.RELEASE</spring-boot.version>
|
<spring-boot.version>2.0.1.RELEASE</spring-boot.version>
|
||||||
<spring-test.version>4.3.17.RELEASE</spring-test.version>
|
<spring-test.version>5.0.1.RELEASE</spring-test.version>
|
||||||
<neo4j-ogm.version>2.1.1</neo4j-ogm.version>
|
<neo4j-ogm.version>3.1.2</neo4j-ogm.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package com.baeldung.spring.data.neo4j.config;
|
package com.baeldung.spring.data.neo4j.config;
|
||||||
|
|
||||||
|
import org.neo4j.ogm.config.Configuration.Builder;
|
||||||
import org.neo4j.ogm.session.SessionFactory;
|
import org.neo4j.ogm.session.SessionFactory;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.ComponentScan;
|
import org.springframework.context.annotation.ComponentScan;
|
||||||
|
@ -8,15 +9,14 @@ import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories;
|
||||||
|
|
||||||
@ComponentScan(basePackages = { "com.baeldung.spring.data.neo4j.services" })
|
@ComponentScan(basePackages = { "com.baeldung.spring.data.neo4j.services" })
|
||||||
@Configuration
|
@Configuration
|
||||||
@EnableNeo4jRepositories(basePackages = "com.baeldung.spring.data.neo4j.repostory")
|
@EnableNeo4jRepositories(basePackages = "com.baeldung.spring.data.neo4j.repository")
|
||||||
public class MovieDatabaseNeo4jConfiguration {
|
public class MovieDatabaseNeo4jConfiguration {
|
||||||
|
|
||||||
public static final String URL = System.getenv("NEO4J_URL") != null ? System.getenv("NEO4J_URL") : "http://neo4j:movies@localhost:7474";
|
public static final String URL = System.getenv("NEO4J_URL") != null ? System.getenv("NEO4J_URL") : "http://neo4j:movies@localhost:7474";
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public org.neo4j.ogm.config.Configuration getConfiguration() {
|
public org.neo4j.ogm.config.Configuration getConfiguration() {
|
||||||
org.neo4j.ogm.config.Configuration config = new org.neo4j.ogm.config.Configuration();
|
org.neo4j.ogm.config.Configuration config = new Builder().uri(URL).build();
|
||||||
config.driverConfiguration().setDriverClassName("org.neo4j.ogm.drivers.http.driver.HttpDriver").setURI(URL);
|
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,26 +1,25 @@
|
||||||
package com.baeldung.spring.data.neo4j.config;
|
package com.baeldung.spring.data.neo4j.config;
|
||||||
|
|
||||||
|
import org.neo4j.ogm.config.Configuration.Builder;
|
||||||
import org.neo4j.ogm.session.SessionFactory;
|
import org.neo4j.ogm.session.SessionFactory;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.ComponentScan;
|
import org.springframework.context.annotation.ComponentScan;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.context.annotation.Profile;
|
import org.springframework.context.annotation.Profile;
|
||||||
import org.springframework.data.neo4j.config.Neo4jConfiguration;
|
|
||||||
import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories;
|
import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories;
|
||||||
|
import org.springframework.data.neo4j.transaction.Neo4jTransactionManager;
|
||||||
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@EnableTransactionManagement
|
@EnableTransactionManagement
|
||||||
@ComponentScan(basePackages = { "com.baeldung.spring.data.neo4j.services" })
|
@ComponentScan(basePackages = { "com.baeldung.spring.data.neo4j.services" })
|
||||||
@EnableNeo4jRepositories(basePackages = "com.baeldung.spring.data.neo4j.repostory")
|
@EnableNeo4jRepositories(basePackages = "com.baeldung.spring.data.neo4j.repository")
|
||||||
@Profile({ "embedded", "test" })
|
@Profile({ "embedded", "test" })
|
||||||
public class MovieDatabaseNeo4jTestConfiguration extends Neo4jConfiguration {
|
public class MovieDatabaseNeo4jTestConfiguration {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public org.neo4j.ogm.config.Configuration getConfiguration() {
|
public org.neo4j.ogm.config.Configuration getConfiguration() {
|
||||||
final org.neo4j.ogm.config.Configuration config = new org.neo4j.ogm.config.Configuration();
|
org.neo4j.ogm.config.Configuration config = new Builder().build();
|
||||||
config.driverConfiguration()
|
|
||||||
.setDriverClassName("org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver");
|
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,5 +27,10 @@ public class MovieDatabaseNeo4jTestConfiguration extends Neo4jConfiguration {
|
||||||
public SessionFactory getSessionFactory() {
|
public SessionFactory getSessionFactory() {
|
||||||
return new SessionFactory(getConfiguration(), "com.baeldung.spring.data.neo4j.domain");
|
return new SessionFactory(getConfiguration(), "com.baeldung.spring.data.neo4j.domain");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public Neo4jTransactionManager transactionManager() {
|
||||||
|
return new Neo4jTransactionManager(getSessionFactory());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
package com.baeldung.spring.data.neo4j.domain;
|
package com.baeldung.spring.data.neo4j.domain;
|
||||||
|
|
||||||
import org.neo4j.ogm.annotation.GraphId;
|
import org.neo4j.ogm.annotation.GeneratedValue;
|
||||||
|
import org.neo4j.ogm.annotation.Id;
|
||||||
import org.neo4j.ogm.annotation.NodeEntity;
|
import org.neo4j.ogm.annotation.NodeEntity;
|
||||||
import org.neo4j.ogm.annotation.Relationship;
|
import org.neo4j.ogm.annotation.Relationship;
|
||||||
|
|
||||||
@NodeEntity
|
@NodeEntity
|
||||||
public class Car {
|
public class Car {
|
||||||
@GraphId
|
@Id @GeneratedValue
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
private String make;
|
private String make;
|
||||||
|
|
|
@ -2,7 +2,9 @@ package com.baeldung.spring.data.neo4j.domain;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
||||||
import com.voodoodyne.jackson.jsog.JSOGGenerator;
|
import com.voodoodyne.jackson.jsog.JSOGGenerator;
|
||||||
import org.neo4j.ogm.annotation.GraphId;
|
|
||||||
|
import org.neo4j.ogm.annotation.GeneratedValue;
|
||||||
|
import org.neo4j.ogm.annotation.Id;
|
||||||
import org.neo4j.ogm.annotation.NodeEntity;
|
import org.neo4j.ogm.annotation.NodeEntity;
|
||||||
import org.neo4j.ogm.annotation.Relationship;
|
import org.neo4j.ogm.annotation.Relationship;
|
||||||
|
|
||||||
|
@ -13,7 +15,7 @@ import java.util.List;
|
||||||
|
|
||||||
@NodeEntity
|
@NodeEntity
|
||||||
public class Movie {
|
public class Movie {
|
||||||
@GraphId
|
@Id @GeneratedValue
|
||||||
Long id;
|
Long id;
|
||||||
|
|
||||||
private String title;
|
private String title;
|
||||||
|
|
|
@ -2,7 +2,9 @@ package com.baeldung.spring.data.neo4j.domain;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
||||||
import com.voodoodyne.jackson.jsog.JSOGGenerator;
|
import com.voodoodyne.jackson.jsog.JSOGGenerator;
|
||||||
import org.neo4j.ogm.annotation.GraphId;
|
|
||||||
|
import org.neo4j.ogm.annotation.GeneratedValue;
|
||||||
|
import org.neo4j.ogm.annotation.Id;
|
||||||
import org.neo4j.ogm.annotation.NodeEntity;
|
import org.neo4j.ogm.annotation.NodeEntity;
|
||||||
import org.neo4j.ogm.annotation.Relationship;
|
import org.neo4j.ogm.annotation.Relationship;
|
||||||
|
|
||||||
|
@ -11,7 +13,7 @@ import java.util.List;
|
||||||
@JsonIdentityInfo(generator = JSOGGenerator.class)
|
@JsonIdentityInfo(generator = JSOGGenerator.class)
|
||||||
@NodeEntity
|
@NodeEntity
|
||||||
public class Person {
|
public class Person {
|
||||||
@GraphId
|
@Id @GeneratedValue
|
||||||
Long id;
|
Long id;
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
|
|
|
@ -3,7 +3,8 @@ package com.baeldung.spring.data.neo4j.domain;
|
||||||
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
|
||||||
import com.voodoodyne.jackson.jsog.JSOGGenerator;
|
import com.voodoodyne.jackson.jsog.JSOGGenerator;
|
||||||
import org.neo4j.ogm.annotation.EndNode;
|
import org.neo4j.ogm.annotation.EndNode;
|
||||||
import org.neo4j.ogm.annotation.GraphId;
|
import org.neo4j.ogm.annotation.GeneratedValue;
|
||||||
|
import org.neo4j.ogm.annotation.Id;
|
||||||
import org.neo4j.ogm.annotation.RelationshipEntity;
|
import org.neo4j.ogm.annotation.RelationshipEntity;
|
||||||
import org.neo4j.ogm.annotation.StartNode;
|
import org.neo4j.ogm.annotation.StartNode;
|
||||||
|
|
||||||
|
@ -12,8 +13,8 @@ import java.util.Collection;
|
||||||
@JsonIdentityInfo(generator = JSOGGenerator.class)
|
@JsonIdentityInfo(generator = JSOGGenerator.class)
|
||||||
@RelationshipEntity(type = "ACTED_IN")
|
@RelationshipEntity(type = "ACTED_IN")
|
||||||
public class Role {
|
public class Role {
|
||||||
@GraphId
|
@Id @GeneratedValue
|
||||||
Long id;
|
Long id;
|
||||||
private Collection<String> roles;
|
private Collection<String> roles;
|
||||||
@StartNode
|
@StartNode
|
||||||
private Person person;
|
private Person person;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
package com.baeldung.spring.data.neo4j.repostory;
|
package com.baeldung.spring.data.neo4j.repository;
|
||||||
|
|
||||||
import com.baeldung.spring.data.neo4j.domain.Movie;
|
import com.baeldung.spring.data.neo4j.domain.Movie;
|
||||||
import org.springframework.data.neo4j.annotation.Query;
|
import org.springframework.data.neo4j.annotation.Query;
|
||||||
import org.springframework.data.neo4j.repository.GraphRepository;
|
import org.springframework.data.neo4j.repository.Neo4jRepository;
|
||||||
import org.springframework.data.repository.query.Param;
|
import org.springframework.data.repository.query.Param;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
public interface MovieRepository extends GraphRepository<Movie> {
|
public interface MovieRepository extends Neo4jRepository<Movie, Long> {
|
||||||
|
|
||||||
Movie findByTitle(@Param("title") String title);
|
Movie findByTitle(@Param("title") String title);
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
package com.baeldung.spring.data.neo4j.repository;
|
||||||
|
|
||||||
|
import com.baeldung.spring.data.neo4j.domain.Person;
|
||||||
|
import org.springframework.data.neo4j.repository.Neo4jRepository;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public interface PersonRepository extends Neo4jRepository<Person, Long> {
|
||||||
|
}
|
|
@ -1,9 +0,0 @@
|
||||||
package com.baeldung.spring.data.neo4j.repostory;
|
|
||||||
|
|
||||||
import com.baeldung.spring.data.neo4j.domain.Person;
|
|
||||||
import org.springframework.data.neo4j.repository.GraphRepository;
|
|
||||||
import org.springframework.stereotype.Repository;
|
|
||||||
|
|
||||||
@Repository
|
|
||||||
public interface PersonRepository extends GraphRepository<Person> {
|
|
||||||
}
|
|
|
@ -1,10 +1,11 @@
|
||||||
package com.baeldung.spring.data.neo4j.services;
|
package com.baeldung.spring.data.neo4j.services;
|
||||||
|
|
||||||
import com.baeldung.spring.data.neo4j.repostory.MovieRepository;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import com.baeldung.spring.data.neo4j.repository.MovieRepository;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
|
|
@ -12,14 +12,12 @@ import org.neo4j.ogm.session.SessionFactory;
|
||||||
|
|
||||||
import com.baeldung.spring.data.neo4j.domain.Car;
|
import com.baeldung.spring.data.neo4j.domain.Car;
|
||||||
import com.baeldung.spring.data.neo4j.domain.Company;
|
import com.baeldung.spring.data.neo4j.domain.Company;
|
||||||
import org.neo4j.ogm.transaction.Transaction;
|
|
||||||
|
|
||||||
public class Neo4jOgmLiveTest {
|
public class Neo4jOgmLiveTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOgm() {
|
public void testOgm() {
|
||||||
Configuration conf = new Configuration();
|
Configuration conf = new Configuration.Builder().build();
|
||||||
conf.driverConfiguration().setDriverClassName("org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver");
|
|
||||||
|
|
||||||
SessionFactory factory = new SessionFactory(conf, "com.baeldung.spring.data.neo4j.domain");
|
SessionFactory factory = new SessionFactory(conf, "com.baeldung.spring.data.neo4j.domain");
|
||||||
Session session = factory.openSession();
|
Session session = factory.openSession();
|
||||||
|
|
|
@ -4,8 +4,9 @@ import com.baeldung.spring.data.neo4j.config.MovieDatabaseNeo4jTestConfiguration
|
||||||
import com.baeldung.spring.data.neo4j.domain.Movie;
|
import com.baeldung.spring.data.neo4j.domain.Movie;
|
||||||
import com.baeldung.spring.data.neo4j.domain.Person;
|
import com.baeldung.spring.data.neo4j.domain.Person;
|
||||||
import com.baeldung.spring.data.neo4j.domain.Role;
|
import com.baeldung.spring.data.neo4j.domain.Role;
|
||||||
import com.baeldung.spring.data.neo4j.repostory.MovieRepository;
|
import com.baeldung.spring.data.neo4j.repository.MovieRepository;
|
||||||
import com.baeldung.spring.data.neo4j.repostory.PersonRepository;
|
import com.baeldung.spring.data.neo4j.repository.PersonRepository;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
@ -50,10 +51,10 @@ public class MovieRepositoryIntegrationTest {
|
||||||
Role charlie = new Role();
|
Role charlie = new Role();
|
||||||
charlie.setMovie(italianJob);
|
charlie.setMovie(italianJob);
|
||||||
charlie.setPerson(mark);
|
charlie.setPerson(mark);
|
||||||
Collection<String> roleNames = new HashSet();
|
Collection<String> roleNames = new HashSet<>();
|
||||||
roleNames.add("Charlie Croker");
|
roleNames.add("Charlie Croker");
|
||||||
charlie.setRoles(roleNames);
|
charlie.setRoles(roleNames);
|
||||||
List<Role> roles = new ArrayList();
|
List<Role> roles = new ArrayList<>();
|
||||||
roles.add(charlie);
|
roles.add(charlie);
|
||||||
italianJob.setRoles(roles);
|
italianJob.setRoles(roles);
|
||||||
movieRepository.save(italianJob);
|
movieRepository.save(italianJob);
|
||||||
|
|
Loading…
Reference in New Issue