-
-
Notifications
You must be signed in to change notification settings - Fork 389
Closed
Labels
Description
I'm using javers 5.7.2 and have a problem reading nested collection of AgreementMember objects in Agreement. It's a regilar OneToMany relation except AgreementMember has a composite primary key. Here are the classes:
Agreement.java:
@TypeName("Agreement")
public class Agreement
{
@Id
private UUID agreementId;
private UUID locationId;
@OneToMany(mappedBy = "agreement", cascade = CascadeType.ALL, orphanRemoval = true)
@ShallowReference
private List<AgreementMember> agreementMembers;
//other fields ...
}
AgreementMember.java: with AgreementMemberId as primary key:
@TypeName("AgreementMember")
public class AgreementMember
{
public AgreementMemberId getId()
{
return agreementMemberId;
}
@Embeddable
@TypeName("AgreementMemberId")
public static class AgreementMemberId implements Serializable
{
private UUID agreementId;
private UUID memberId;
}
@EmbeddedId
private AgreementMemberId agreementMemberId;
//other fields ...
}
Here is a snapshot
[
Snapshot {
commit:1.0,
id:Agreement/a3ffda86-ba8b-4640-bd03-4ad945aa2546,
version:1,
(agreementId:a3ffda86-ba8b-4640-bd03-4ad945aa2546,
agreementMembers:[
AgreementMember/a3ffda86-ba8b-4640-bd03-4ad945aa2546,
50527728-0f56-4403-8651-7f9eff2dda93
],
locationId:1b1e5b47-ba10-4bb7-9f04-6b81d1c66422)
}
]
And here is an exception when I'm trying to read shadows:
org.javers.shadow.ShadowGraphBuilder#assembleShallowReferenceShadow java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at path $.agreementMemberId
And here is my test:
@Test
void testAgreement()
{
//given
Javers javers = JaversBuilder.javers()
.withListCompareAlgorithm(ListCompareAlgorithm.SIMPLE)
.build()
Agreement agreement = new Agreement()
agreement.agreementId = UUID.randomUUID()
agreement.locationId = UUID.randomUUID()
AgreementMember.AgreementMemberId agreementMemberId = new AgreementMember.AgreementMemberId()
agreementMemberId.agreementId = agreement.agreementId
agreementMemberId.memberId = UUID.randomUUID()
AgreementMember agreementMember = new AgreementMember()
agreementMember.agreementMemberId = agreementMemberId
List<AgreementMember> agreementMemberList = new ArrayList<>()
agreementMemberList.add(agreementMember)
agreement.agreementMembers = agreementMemberList
javers.commit("Agreement", agreement)
JqlQuery query = QueryBuilder.byInstanceId(agreement.agreementId, Agreement.class).build()
List<Shadow<Agreement>> shadows = javers.findShadows(query)
println shadows
}
Any help is greatly appreciated. This might me misconfiguration or something, please advice.
Reactions are currently unavailable