Skip to content

Commit 1dc937f

Browse files
committed
Cater for nested embedded, and find owner that is not embedded. For #138
1 parent b39e4eb commit 1dc937f

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

src/main/java/org/datanucleus/store/rdbms/scostore/BackingStoreHelper.java

+11-3
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,23 @@ private BackingStoreHelper(){}
5656
public static ObjectProvider getOwnerObjectProviderForBackingStore(ObjectProvider op)
5757
{
5858
ObjectProvider ownerOP = op;
59-
if (op.isEmbedded())
59+
while (ownerOP.isEmbedded())
6060
{
6161
// Embedded object, so get the owner object it is embedded in
62-
ObjectProvider[] ownerOPs = op.getExecutionContext().getOwnersForEmbeddedObjectProvider(op);
62+
ObjectProvider[] ownerOPs = op.getExecutionContext().getOwnersForEmbeddedObjectProvider(ownerOP);
6363
if (ownerOPs != null && ownerOPs.length == 1)
6464
{
6565
ownerOP = ownerOPs[0];
6666
}
67-
// TODO Cater for nested embedded? i.e recurse until not embedded
67+
else if (ownerOPs == null || ownerOPs.length == 0)
68+
{
69+
return null;
70+
}
71+
else
72+
{
73+
// Multiple owners so take first one
74+
ownerOP = ownerOPs[0];
75+
}
6876
}
6977
return ownerOP;
7078
}

0 commit comments

Comments
 (0)