我在玩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上找到解决方案。
节点存在于数据库中,但我不能删除它或保存它。请帮忙。
答案 0 :(得分:1)
您正在尝试查看ID为“0”的节点是否作为人员存在。由于根节点没有“__type__
”属性,因此调用将失败。 SDN使用此属性来确定节点的实体类型。
话虽如此,例外似乎是由以下行引起的:
if(! personRepository.exists(0L)) {