@@ -110,7 +110,7 @@ enum Operator {
110
110
111
111
private native long nativeBuild (long handle );
112
112
113
- private native long nativeLink (long handle , long storeHandle , int sourceEntityId , int targetEntityId ,
113
+ private native long nativeLink (long handle , long storeHandle , int relationOwnerEntityId , int targetEntityId ,
114
114
int propertyId , int relationId , boolean backlink );
115
115
116
116
private native void nativeOrder (long handle , int propertyId , int flags );
@@ -286,13 +286,15 @@ public QueryBuilder<T> sort(Comparator<T> comparator) {
286
286
* @return A builder to define query conditions at the target entity side.
287
287
*/
288
288
public <TARGET > QueryBuilder <TARGET > link (RelationInfo <TARGET > relationInfo ) {
289
- return link (relationInfo , relationInfo .sourceInfo , relationInfo .targetInfo , relationInfo .isBacklink ());
289
+ boolean backlink = relationInfo .isBacklink ();
290
+ EntityInfo relationOwner = backlink ? relationInfo .targetInfo : relationInfo .sourceInfo ;
291
+ return link (relationInfo , relationOwner , relationInfo .targetInfo , backlink );
290
292
}
291
293
292
- private <TARGET > QueryBuilder <TARGET > link (RelationInfo relationInfo , EntityInfo source , EntityInfo target ,
294
+ private <TARGET > QueryBuilder <TARGET > link (RelationInfo relationInfo , EntityInfo relationOwner , EntityInfo target ,
293
295
boolean backlink ) {
294
296
int propertyId = relationInfo .targetIdProperty != null ? relationInfo .targetIdProperty .id : 0 ;
295
- long linkQBHandle = nativeLink (handle , storeHandle , source .getEntityId (), target .getEntityId (), propertyId ,
297
+ long linkQBHandle = nativeLink (handle , storeHandle , relationOwner .getEntityId (), target .getEntityId (), propertyId ,
296
298
relationInfo .relationId , relationInfo .isBacklink ());
297
299
return new QueryBuilder <>(storeHandle , linkQBHandle );
298
300
}
@@ -314,8 +316,7 @@ public <TARGET> QueryBuilder<TARGET> backlink(RelationInfo relationInfo) {
314
316
if (relationInfo .isBacklink ()) {
315
317
throw new IllegalArgumentException ("Double backlink: The relation is already a backlink, please use a regular link on the original relation instead." );
316
318
}
317
-
318
- return link (relationInfo , relationInfo .targetInfo , relationInfo .sourceInfo , false );
319
+ return link (relationInfo , relationInfo .sourceInfo , relationInfo .sourceInfo , true );
319
320
}
320
321
321
322
/**
0 commit comments