spring - equivalent of template.createRelationBetween in SDN4 -


my project use spring-data-neo4j 3.3.0 , i'm trying use new 4.0.0.release version. in code have following code :

neo4jtemplate.createrelationshipbetween(eltorrel, attribute, valueclass, graphrelationtype.has_att_value, true) 

what equivalent of code (which use this method in api in new version of sdk please ?

more don't know how create relation of given type specific class. how can write such creation in cypher please ?

@luanne here little example of problem.

class element :

@nodeentity public class element {  @graphid private long id;  private int age;  private string  uuid;  @relationship(type = "has_att_value") private set<hasattvalue> values = new hashset<hasattvalue>(); ... 

class attribute :

@nodeentity public class attribute { @graphid private long id;  private string attname; 

and class hasattvalue :

@relationshipentity(type = "has_att_value") public class hasattvalue {  @graphid private long id;  @startnode element element;  @endnode attribute attribute;  private string value;  public hasattvalue() { }  public hasattvalue(element element, attribute attribute, string value) {     this.element = element;     this.attribute = attribute;     this.value = value;     this.element.getvalues().add(this); } 

in first case, works charm, and, in example have following graph (seeing in server browser) value on has_att_value relationshipentity:

(element)->[has_att_value]->(attribute) 

but problem in following case (which working previous sdn). instead of hasattvalue previous class, have :

@relationshipentity(type = "has_att_value") public abstract class hasattvalue<t> {  @graphid private long id;  @startnode element element;  @endnode attribute attribute;  private t value;  public hasattvalue() { }  public hasattvalue(element element, attribute attribute, t value) {     this.element = element;     this.attribute = attribute;     this.value = value;     this.element.getvalues().add(this); } 

with example 2 subclasses. first 1 :

public class hasbooleanvalue extends hasattvalue<boolean> {  public hasbooleanvalue() { }  public hasbooleanvalue(element elt, attribute attribut, boolean value) {     super(elt, attribut, value); } } 

second 1 :

public class hasstringvalue extends hasattvalue<string> {  private string locale;  public hasstringvalue() { }  public hasstringvalue(element element, attribute attribut, string value)   {     super(element, attribut, value); } 

in case graph following :

(element)->[has_att_value]->(hasbooleanvalue|hasstringvalue)->[attribute]->(attribute) 

and arc in graphe (element)<-[element]-(hasbooleanvalue|hasstringvalue)

so how can have (element)->[has_att_value]->(attribute) "has_att_value" relationshipentity containing datas having diffent impletations in java code ? again, working in sdn3 when used neo4jtemplate.createrelationshipbetween(eltorrel, attribute, valueclass, graphrelationtype.has_att_value, true) create "hasattvalue" relationshipentity.

thank much

in sdn 4.0, relationships not need created explicitly using neo4jtemplate methods. persisting entity on @relationships defined enough create relationships. if have properties on relationship, you'd need @relationshipentity.

an explanation of object models in sdn 4.0 can found here http://graphaware.com/neo4j/2015/09/03/sdn-4-object-model.html

update based on additional info @clement:

just move @relationshipentity annotation hasattvalue class each subclass, example

@relationshipentity(type = "has_att_value") public class hasbooleanvalue extends hasattvalue<boolean> { 

note need latest ogm snapshot since issue around abstract relationship entities fixed. please use

  <dependency>        <groupid>org.neo4j</groupid>        <artifactid>neo4j-ogm</artifactid>        <version>1.1.3-snapshot</version>   </dependency>  <repository>        <id>neo4j-snapshots</id>        <url>http://m2.neo4j.org/content/repositories/snapshots</url>        <snapshots>            <enabled>true</enabled>        </snapshots>   </repository>  

or use sdn 4.1 snapshot

<dependency>     <groupid>org.springframework.data</groupid>     <artifactid>spring-data-neo4j</artifactid>     <version>4.1.0.build-snapshot</version> </dependency> 

then graph should like

enter image description here

using cypher directly not idea you'd have able nodes (maybe id), mean have saved first.


Comments

Popular posts from this blog

java - Date formats difference between yyyy-MM-dd'T'HH:mm:ss and yyyy-MM-dd'T'HH:mm:ssXXX -

c# - Get rid of xmlns attribute when adding node to existing xml -