@NodeEntity
public class Person {
@GraphId Long id;
public String name;
public Person() {}
public Person(String name) { this.name = name; }
@RelatedTo(type="MEMBER_OF", direction=Direction.OUTGOING)
Dojo dojo;
@RelatedTo(type="MEMBER_OF", direction=Direction.OUTGOING)
MailingList mailingList;
public void setDojo(Dojo dojo) {
this.dojo = dojo;
}
public void setMailingList(MailingList mailingList) {
this.mailingList = mailingList;
}
@Override
public String toString() {
return "Person [name=" + name + "]";
}
}
java:
@NodeEntity
public class Dojo {
@GraphId Long id;
public String name;
public Dojo() { }
public Dojo(String name) { this.name = name; }
@Override
public String toString() {
return "Dojo [name=" + name + "]";
}
}
MailingList.java:
@NodeEntity
public class MailingList {
@GraphId Long id;
public String name;
public MailingList() { }
public MailingList(String name) { this.name = name; }
@Override
public String toString() {
return "MailingList [name=" + name + "]";
}
}
application.java:
@Configuration
@EnableNeo4jRepositories(basePackages = "hello")
public class Application extends Neo4jConfiguration implements CommandLineRunner {
public Application() {
setBasePackage("hello");
}
@Bean
GraphDatabaseService graphDatabaseService() {
return new GraphDatabaseFactory().newEmbeddedDatabase("accessingdataneo4j.db");
}
@Autowired
PersonRepository personRepository;
@Autowired
GraphDatabase graphDatabase;
public void run(String... args) throws Exception {
Transaction tx = graphDatabase.beginTx();
try {
Person linus = new Person("Linus");
linus.setDojo(new Dojo("Coding Dojo"));
linus.setMailingList(new MailingList("Kernel Mailing List"));
personRepository.save(linus);
tx.success();
} finally {
tx.close();
}
}
public static void main(String[] args) throws Exception {
FileUtils.deleteRecursively(new File("accessingdataneo4j.db"));
SpringApplication.run(Application.class, args);
}
}
@NodeEntity
public class Person {
@GraphId Long id;
public String name;
public Person() {}
public Person(String name) { this.name = name; }
@RelatedTo(type="MEMBER_OF_DOJO", direction=Direction.OUTGOING)
Dojo dojo;
@RelatedTo(type="MEMBER_OF_LIST", direction=Direction.OUTGOING)
MailingList mailingList;
public void setDojo(Dojo dojo) {
this.dojo = dojo;
}
public void setMailingList(MailingList mailingList) {
this.mailingList = mailingList;
}
@Override
public String toString() {
return "Person [name=" + name + "]";
}
}
从这个例子中我的理解是,spring-data-neo4j将不允许一个类拥有两个具有相同标签的属性。在某些情况下,不同的关系需要有相同的标签--例如,为了符合建模标准。是否可以在spring-data-neo4j中设置多个同名关系?如果是,怎么做?
我已经找到了这个问题的答案。我要查找的是文档中描述的“EnforceTargetType”属性。
我创建了一个使用此修复的存储库分支。它可以在https://github.com/spencerhrob/gs-accessing-data-neo4j/tree/same-name-enforce-target找到。
person.java:
@NodeEntity
public class Person {
@GraphId Long id;
public String name;
public Person() {}
public Person(String name) { this.name = name; }
@RelatedTo(type="MEMBER_OF", direction=Direction.OUTGOING, enforceTargetType=true)
Dojo dojo;
@RelatedTo(type="MEMBER_OF", direction=Direction.OUTGOING, enforceTargetType=true)
MailingList mailingList;
public void setDojo(Dojo dojo) {
this.dojo = dojo;
}
public void setMailingList(MailingList mailingList) {
this.mailingList = mailingList;
}
@Override
public String toString() {
return "Person [name=" + name + "]";
}
}
我现在的解决办法是先保存所有的ArchitectureUnitState节点,从数据库中再次检索它们,将一个节点映射到另一个节点,然后再次保存它。这样,可以创建关系,但我需要保存两次。
在使用@RepositoryRestResource将域对象导出到Rest时,如何在Java中创建Neo4j关系?
我正在创建一个简单的社交图,用户可以在其中创建一个帖子,标记它,并对它进行评论。我用py2neo做模型。该模型具有和作为节点。用户在上、或。在我的例子中,单个用户可以在单个上创建多个或(就像其他任何社交网络一样)。根据我的模型,这需要多个或关系,但具有不同的属性。模型是这样建立的: 我运行以下操作来构建图形: 我希望有两个关系,如下所示: 但我看到事实并非如此: 那么,我的问题是双重的。(1)可以
我使用一个Android库,它要求我创建两个类,每个类继承自不同的类 (具有公共基类) 现在我有这个代码: 我必须复制这个类来创建一个扩展,即使我的两个类共享完全相同的代码。 我简化了示例的代码,但重复可能很重要 我决定将代码放在这两个类之外的静态方法中,并在类重写的方法中调用它们,但我认为必须有一种更干净的方法来做到这一点。 你能帮我解决这个问题吗? 和都继承自。
但是我有两种回购方式 如何创建两个bean,其中一个是用注入的,另一个是用注入的?
尝试在 工作,并将标签应用于创建的节点。 Q1.我可以告诉SDN只附加作为标签,并避免 Q2。如果没有,那么我如何将和标签附加到所有用户节点。目前只附加了标签 编辑: 问题1: 在我以前的SDN版本(即)中,突然查询开始工作,但在类似查询的存储库中失败,但适用于或 问题2: 当我更新我的SDN或Neo4j版本时,我得到了奇怪的异常,这就是为什么我没有更新我的SDN和Neo4j版本。 刚才我将SDN