2016-08-10 1 views
1

Демонстрационный проект я работаю с может быть найден здесь прилагается - Spring JiraNeo4j нулевой указатель исключение при сохранении через @Repository

Это моя конфигурация

@EnableNeo4jRepositories(basePackages = "com.graph.repository") 
public class DBConfig extends Neo4jConfiguration{ 
    @Value("${neo4j.location}") 
    private String neo4jDatabaseLocation; 

    @Override 
    public SessionFactory getSessionFactory() { 
     return new SessionFactory(getConfiguration(), "com.graph.entity"); 
    } 

    @Bean 
    public Configuration getConfiguration() { 
     Configuration configuration = new Configuration(); 
     configuration.driverConfiguration() 
      .setDriverClassName("org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver") 
      .setURI(neo4jDatabaseLocation); 
     return configuration; 
    } 

    @Bean 
    @Override 
    public Session getSession() throws Exception { 
     return getSessionFactory().openSession(); 
    } 
} 

Аннотация Entity

public abstract class Entity { 
@GraphId 
private Long id; 

public Long getId() { 
    return id; 
} 

@Override 
public boolean equals(Object o) { 
    if (this == o) return true; 
    if (o == null || id == null || getClass() != o.getClass()) return false; 

    Entity entity = (Entity) o; 

    if (!id.equals(entity.id)) return false; 

    return true; 
} 

@Override 
public int hashCode() { 
    return (id == null) ? -1 : id.hashCode(); 
} 
} 

Это мое лицо

@NodeEntity(label = "Patient") 
public class Patient extends Entity { 
private String patientId; 
private String patientName; 
private String otherPatientId; 
private String sex; 
private String dateOfBirth; 
private String patientIdIssuer; 
@Relationship(type = "STUDY", direction = Relationship.UNDIRECTED) 
private Set<Study> studies; 

Getters and Setters... 
} 

Исследование имеет вложенное сущность/отношение и имеет другую вложенную сущность/отношение. 1: N отношения

Это мое хранилище

@Repository 
public interface PatientRepository extends GraphRepository<Patient> { 
} 

И это вызывающему методу

public class Test() { 
    @Autowired 
    private PatientRepository patientRepository; 

    public void test() { 
     Patient patient = new Patient(); 
     // set fields 
     patientRepository.save(patient); -> This is where I get NPE 
    } 
} 

Трассировка стека:

Caused by: java.lang.NullPointerException: null 
at org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver.nativeTransaction(EmbeddedDriver.java:180) ~[neo4j-ogm-embedded-driver-2.0.4.jar:na] 
at org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver.newTransaction(EmbeddedDriver.java:148) ~[neo4j-ogm-embedded-driver-2.0.4.jar:na] 
at org.neo4j.ogm.session.transaction.DefaultTransactionManager.openTransaction(DefaultTransactionManager.java:57) ~[neo4j-ogm-core-2.0.4.jar:na] 
at org.neo4j.ogm.session.delegates.TransactionsDelegate.beginTransaction(TransactionsDelegate.java:37) ~[neo4j-ogm-core-2.0.4.jar:na] 
at org.neo4j.ogm.session.Neo4jSession.beginTransaction(Neo4jSession.java:441) ~[neo4j-ogm-core-2.0.4.jar:na] 
at org.neo4j.ogm.session.request.RequestExecutor.executeSave(RequestExecutor.java:84) ~[neo4j-ogm-core-2.0.4.jar:na] 
at org.neo4j.ogm.session.delegates.SaveDelegate.save(SaveDelegate.java:75) ~[neo4j-ogm-core-2.0.4.jar:na] 
at org.neo4j.ogm.session.delegates.SaveDelegate.save(SaveDelegate.java:44) ~[neo4j-ogm-core-2.0.4.jar:na] 
at org.neo4j.ogm.session.Neo4jSession.save(Neo4jSession.java:425) ~[neo4j-ogm-core-2.0.4.jar:na] 

Может кто-то пожалуйста, скажите мне, что я m делать неправильно ??

Примечание: Я имел эту работу раньше с sdn.3.x с GraphDatabaseService

+0

Вы уверены, что база данных граф местоположение читается? Можете ли вы проверить, что graphDatabaseService настроен в getSessionFactory(), установив нуль с помощью EmbeddedDriver embeddedDriver = (EmbeddedDriver) Components.driver(); GraphDatabaseService databaseService = embeddedDriver.getGraphDatabaseService(); – Luanne

+0

embeddedDriver и databaseService оба не равны нулю. Проверено непосредственно перед вызовом .save() – Razor

+0

Можете ли вы поделиться своим классом Entity? – Luanne

ответ

1

Похоже, единственное, что хватает только @Configuration аннотацию на вашем Neo4jConfiguration классе:

@org.springframework.context.annotation.Configuration 
@EnableTransactionManagement 
@EnableNeo4jRepositories(basePackages = "com.seyfert.matrix.graph.repository") 
public class DBConfig extends Neo4jConfiguration{ 
... 
+0

Работает! Благодаря!! – Razor