@@ -1395,11 +1395,26 @@ else if (joinedExpr instanceof DyadicExpression && joinedExpr.getOperator() == E
1395
1395
1396
1396
if (mmd .isEmbedded ())
1397
1397
{
1398
+ // Embedded into the same table as before, so no join needed
1398
1399
otherMapping = sqlTbl .getTable ().getMemberMapping (mmd );
1399
1400
}
1400
1401
else
1401
1402
{
1402
- otherMapping = sqlTbl .getTable ().getMemberMapping (mmd );
1403
+ if (sqlTbl .getTable () instanceof CollectionTable )
1404
+ {
1405
+ // Currently in a join table, so work from the element and this being an embedded member
1406
+ CollectionTable collTbl = (CollectionTable )sqlTbl .getTable ();
1407
+ JavaTypeMapping elemMapping = collTbl .getElementMapping ();
1408
+ if (elemMapping instanceof EmbeddedMapping )
1409
+ {
1410
+ otherMapping = ((EmbeddedMapping )elemMapping ).getJavaTypeMapping (mmd .getName ());
1411
+ }
1412
+ }
1413
+ else
1414
+ {
1415
+ otherMapping = sqlTbl .getTable ().getMemberMapping (mmd );
1416
+ }
1417
+
1403
1418
relTable = storeMgr .getDatastoreClass (mmd .getTypeName (), clr );
1404
1419
if (otherMapping == null && previousMapping != null )
1405
1420
{
@@ -1494,6 +1509,7 @@ else if (relationType == RelationType.ONE_TO_ONE_BI)
1494
1509
1495
1510
if (mmd .isEmbedded ())
1496
1511
{
1512
+ // Embedded into the same table as before, so no join needed
1497
1513
otherMapping = sqlTbl .getTable ().getMemberMapping (mmd );
1498
1514
}
1499
1515
else
@@ -1507,7 +1523,21 @@ else if (relationType == RelationType.ONE_TO_ONE_BI)
1507
1523
}
1508
1524
else
1509
1525
{
1510
- otherMapping = sqlTbl .getTable ().getMemberMapping (mmd );
1526
+ if (sqlTbl .getTable () instanceof CollectionTable )
1527
+ {
1528
+ // Currently in a join table, so work from the element and this being an embedded member
1529
+ CollectionTable collTbl = (CollectionTable )sqlTbl .getTable ();
1530
+ JavaTypeMapping elemMapping = collTbl .getElementMapping ();
1531
+ if (elemMapping instanceof EmbeddedMapping )
1532
+ {
1533
+ otherMapping = ((EmbeddedMapping )elemMapping ).getJavaTypeMapping (mmd .getName ());
1534
+ }
1535
+ }
1536
+ else
1537
+ {
1538
+ otherMapping = sqlTbl .getTable ().getMemberMapping (mmd );
1539
+ }
1540
+
1511
1541
if (otherMapping == null && previousMapping != null )
1512
1542
{
1513
1543
if (previousMapping instanceof EmbeddedMapping )
0 commit comments