Created
January 23, 2012 15:05
-
-
Save mikeycmccarthy/1663559 to your computer and use it in GitHub Desktop.
Single Relationship Persistance
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
...domain model | |
@NodeEntity | |
public class Member { | |
@GraphId | |
private Long graphId; | |
@Indexed | |
private Long memberId; | |
@RelatedToVia(type = "REFERRAL", direction = Direction.INCOMING) | |
private Referral referer; | |
@RelatedToVia(type = "REFERRAL", direction = Direction.OUTGOING) | |
private Set<Referral> referees; | |
public Member() { | |
} | |
public Member(Long memberId) { | |
this.memberId = memberId; | |
} | |
public Long getMemberId() { | |
return memberId; | |
} | |
public void refer(Member memberToRefer){ | |
referees.add(new Referral(this, memberToRefer)); | |
} | |
public Referral getReferer() { | |
return referer; | |
} | |
public Set<Referral> getReferees() { | |
return referees; | |
} | |
} | |
... relationship | |
@RelationshipEntity(type = "REFERRAL") | |
public class Referral { | |
@GraphId | |
private Long graphId; | |
@EndNode | |
private Member referee; | |
@StartNode | |
private Member referrer; | |
public Referral() { | |
} | |
public Referral(Member referrer, Member referee) { | |
this.referrer = referrer; | |
this.referee = referee; | |
} | |
} | |
...and failing test | |
@Test | |
public void testAddReferral() throws Exception { | |
Long firstMemberId = 201L; | |
memberRepository.save(new Member(firstMemberId)); | |
Member firstMember = memberService.findMember(firstMemberId); | |
Long secondMemberId = 202L; | |
memberRepository.save(new Member(secondMemberId)); | |
Member secondMember = memberService.findMember(secondMemberId); | |
firstMember.refer(secondMember); | |
memberRepository.save(firstMember); | |
Member firstMemberAfterPersistence = memberService.findMember(firstMemberId); | |
Member secondMemberAfterPersistence = memberService.findMember(secondMemberId); | |
assertEquals(1, firstMemberAfterPersistence.getReferees().size()); | |
assertNull(firstMemberAfterPersistence.getReferer()); | |
assertNotNull(secondMemberAfterPersistence.getReferer()); | |
assertEquals(0, secondMemberAfterPersistence.getReferees().size()); | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment