2016-03-01 566 views
0

我有兩個節點用戶和帳戶,它們之間的關係是任何一種關係。 我的查詢是如何在@Relationship中指定多種關係類型

MATCH (u:User)-[r:rel1|rel2|rel3|rel4]->(a:Account) WHERE u.login_id=~('(?i).*'+{fulltextsearch}+'.*') RETURN u as User,r as acronym 

我的用戶POJO是

public class User{ 

    @GraphId 
    private Long id;  

    String fulltextsearch; 

    String user_id; 

    String status; 


//@Relationship(type = "rel1", direction= Relationship.OUTGOING) 
    Acronym acronym; 
    public Acronym getAcronym() { 
    return acronym; 
    } 


    private Set<Account> accounts; 

    public User() { 

    } 

    public String getUser_id() { 
    return user_id; 
    } 

    public String getStatus() { 
    return status; 
    } 


    public String getFulltextsearch() { 
    return fulltextsearch; 
    } 


    public Set<Account> getAccounts() { 
    return accounts; 
    } 


    public void setAccounts(Set<Account> accounts) { 
    this.accounts = accounts; 
    } 

    } 

我在與多個relatioships寫我的用戶POJO困惑。 我可以給@Relatioship與OR的多重關係。

這樣@Relationship(type = "rel1 | rel2", direction= Relationship.OUTGOING)

回答

1

不,你不能提供多種關係類型爲@Relationship。你將不得不在你的實體獨立聲明它們:

@Relationship(type = "rel1", direction= Relationship.OUTGOING) 
    Acronym acronymRel1; 

    @Relationship(type = "rel2", direction= Relationship.OUTGOING) 
    Acronym acronymRel2; 

您可以編寫自定義查詢基於一組關係類型來獲取所有縮略語。

0

Luanne。

感謝您的更新。 我的首字母縮略詞Pojo for single relationship看起來像這樣,效果很好。

@JsonIdentityInfo(generator=JSOGGenerator.class) 
@RelationshipEntity(type = "rel1") 
public class Acronym { 
@GraphId 
Long id; 
String acronym; 

@StartNode 
private User user; 

@EndNode 
private Account account; 

public Acronym() { 
} 

public String getAcronym() { 
    return acronym; 
} 
public User getUser() { 
    return user; 
} 
public Account getAccount() { 
    return account; 
} 
} 

但如何在這裏提到的倍數關係。如果在課程開始前我@RelationshipEntity,則值爲空,它不是rel1。 請澄清如何繼續使用POJO。

相關問題