目标状态不是请求的接口org.neo4j.graphdb.Node,但为null

时间:2014-03-06 16:00:04

标签: neo4j spring-data-neo4j

我在玩neo4j时遇到了一些困难。首先,当我尝试删除已定义的@EntityModel时,我得到一个异常(请原谅我的图片质量,异常消息也是问题标题):

My Controller (this is just for testing purpouse):

@Controller
public class HomeController {

@Autowired
PersonRepository personRepository;

@RequestMapping(value="/", method = RequestMethod.GET)
public String loadPage(final Model model, final HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {

    Person person = new Person("My person");

    personRepository.save(person);

    personRepository.findOne(person.getId());

    return "home";
}

}

模特:

@NodeEntity
public class Person {

@GraphId
private Long id;

private String name;

public Person() {}

public Person(String name) {
     this.name = name;
}

public String getName() {
    return name;
}

public void setName(final String name) {
    this.name = name;
}

public Long getId() {
    return id;
}

}

配置文件:

 @Configuration
 @EnableTransactionManagement
 @EnableNeo4jRepositories(basePackages = "com.springapp.mvc.repository")
 @ComponentScan({"com.springapp.mvc"})
 public class PersistenceConfig extends Neo4jConfiguration {

@Bean
public GraphDatabaseService graphDatabaseService() {
    return new SpringRestGraphDatabase("http://localhost:7474/db/data");
}
}

我的存储库:

public interface PersonRepository extends GraphRepository<Person> {

@Query("MATCH (n:Person{name: \"{namveValue}\"}) RETURN n;")
Person findByName(@Param("nameValue") final String name);
}

我做错了什么?我发现也许Person应该实现org.neo4j.graphdb.Node,这是这些异常的来源。但是,在搜索了github repos后,我发现人们没有在他们的模型中实现这个接口。到目前为止,我还没有在stackoverflow上找到解决方案。

节点存在于数据库中,但我不能删除它或保存它。请帮忙。

1 个答案:

答案 0 :(得分:1)

您正在尝试查看ID为“0”的节点是否作为人员存在。由于根节点没有“__type__”属性,因此调用将失败。 SDN使用此属性来确定节点的实体类型。

话虽如此,例外似乎是由以下行引起的:

if(! personRepository.exists(0L)) {