I have a class that keeps track of relationship data between two parties., so part of it looks like:
Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class PartyRelationship extends BasePersistentModel{
@Temporal(TemporalType.DATE)
private Date fromDate;
@Temporal(TemporalType.DATE)
private Date thruDate;
@Lob
private String comment;
@ManyToOne
private PartyRole relationshipTo;
@ManyToOne
private PartyRole relationshipFrom;
When I persist this, it goes to the database correctly. However when I retrieve the relationshipFrom field by itself, it doesn't get retrieved. I've looked at the code and can't see where it's mapping wrong.
I force the bi-directional relationships here:
@Override
public String persist() {
PartyRole relationshipFrom = getInstance().getRelationshipFrom();
if( ! relationshipFrom.getInvolvedIn().contains( getInstance())){
relationshipFrom.getInvolvedIn().add(getInstance());
}
PartyRole relationshipTo = getInstance().getRelationshipTo();
if( ! relationshipTo.getInvolvedIn().contains( getInstance())){
relationshipTo.getInvolvedIn().add(getInstance());
}
return super.persist();
}
And this works. Both the from and to are correct. When I pull the relationship class itself, all the fields are correct. It's only the PartyRole on the from side that doesn't get populated on retrieval, the to side works just fine.
Any ideas on what I'm doing wrong?