我的项目有一些奇怪的地方,我看不出它是否有错。
我在Spring neo4j (v4.0.0)中使用spring。
我控制器中的这段代码破坏了关系。
@RequestMapping("/initialize")
public Object initialize() {
Organization orga = new Organization();
orga.setName("WEAVERS");
this.organizationRepository.save(orga);
User user = new User();
user.setEmail("t.rignoux@gmail.com");
user.setFirst_name("Thierno");
user.setLast_name("Rignoux");
user.setLogin("317");
user.setOrganization(orga);
this.userRepository.save(user);
User user2 = new User();
user2.setEmail("petitenessie@gmail.com");
user2.setFirst_name("Eléonore");
user2.setLast_name("Klein");
user2.setLogin("nessie");
user2.setOrganization(orga);
this.userRepository.save(user2);
Project project = new Project();
project.setName("PROJET 1");
project.setOrganization(orga);
project.setUser(user);
this.projectRepository.save(project);
Project project2 = new Project();
project2.setName("PROJET 2");
project2.setOrganization(orga);
project2.setUser(user2);
this.projectRepository.save(project2);
return orga;
}正如您在这张图上所看到的:

当我创建USER1时,组织和USER2之间的关系已经被切断了。
在我的申请中我到处都能看到破裂的关系..。我不明白!
neo4j配置
@EnableTransactionManagement
@Import(RepositoryRestMvcConfiguration.class)
@EnableScheduling
@EnableAutoConfiguration
@ComponentScan(basePackages = {"fr.weavers.loom"})
@Configuration
@EnableNeo4jRepositories(basePackages = "fr.weavers.loom.repositories")
public class LoomNeo4jConfiguration extends Neo4jConfiguration {
public static final String URL = System.getenv("NEO4J_URL") != null ? System.getenv("NEO4J_URL") : "http://localhost:7474";
@Override
public Neo4jServer neo4jServer() {
return new RemoteServer(URL,"neo4j","loomREST2016");
}
@Override
public SessionFactory getSessionFactory() {
return new SessionFactory("fr.weavers.loom.domain");
}
}组织域:
public class Organization extends Node {
@GraphId
Long id;
String name;
@Relationship(type = "SET_UP", direction = Relationship.OUTGOING)
Set<SET_UP> projects;
@Relationship(type = "WORK_FOR", direction = Relationship.INCOMING)
Set<WORK_FOR> users;
[...]WORK_FOR域:
public class WORK_FOR extends Relationship {
@GraphId
private Long relationshipId;
@StartNode
public User user;
@EndNode
public Organization organization;
public WORK_FOR() {
super();
}
}用户域:
public class User extends Node {
@GraphId
Long id;
String login;
@JsonIgnore
String password;
String first_name;
String last_name;
String email;
@Relationship(type = "WORK_FOR")
WORK_FOR workFor;我到处找都找不到任何东西来帮我.
谢谢
发布于 2016-01-12 15:16:57
在初始化请求中,您需要进行几次存储库调用来构造数据库。每个调用都将构造一个新的Session,有效地清除前一个调用中的信息,因为Spring默认为每个请求会话。这很可能是删除现有关系的原因。
如果您将以下bean定义添加到您的配置中,我认为这个问题应该得到解决。
@Override
@Bean
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public Session getSession() throws Exception {
return super.getSession();
}有关会话范围的更多信息,请参阅文档这里。
发布于 2016-01-11 09:58:11
请在Node类上注释传入的关系:
@Relationship(type = "WORK_FOR", Direction = Relationship.INCOMING) WORK_FOR workFor;
根据文档,所有传入的关系都必须完全注释--默认值是传出的。
https://stackoverflow.com/questions/34708335
复制相似问题