Skip to content

Commit 840b331

Browse files
authored
Merge pull request #6 from kaiso/feature/#5
[#5] transform the reference type from ObjectId to Object in OneToOne…
2 parents 4432feb + 7c9ef15 commit 840b331

4 files changed

Lines changed: 12 additions & 12 deletions

File tree

src/main/java/io/github/kaiso/relmongo/events/callback/PersistentPropertySavingCallback.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ private void saveAssociation(Field field) {
6464
((BasicDBObject) source).put(name, list);
6565
} else if (reference instanceof BasicDBObject) {
6666
((BasicDBObject) source).remove(field.getName());
67-
((BasicDBObject) source).put(name, ((BasicDBObject) reference).get("_id"));
67+
((BasicDBObject) source).put(name, this.keepOnlyIdentifier(reference));
6868
}
6969
} catch (Exception e) {
7070
throw new IllegalArgumentException("Property defined in @JoinProperty annotation is not present", e);

src/main/java/io/github/kaiso/relmongo/mongo/PersistentRelationResolver.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import io.github.kaiso.relmongo.lazy.RelMongoLazyLoader;
2626
import io.github.kaiso.relmongo.model.LoadableObjectsMetadata;
2727

28-
import org.bson.types.ObjectId;
2928
import org.springframework.cglib.proxy.Enhancer;
3029
import org.springframework.cglib.proxy.Factory;
3130
import org.springframework.cglib.proxy.NoOp;
@@ -55,14 +54,12 @@ public static void resolveOnLoading(MongoOperations mongoOperations, List<Loadab
5554
} else {
5655
source.put(relation.getFieldName(), relation.getObjectIds());
5756
}
58-
} else if (relation.getObjectIds() instanceof ObjectId) {
57+
} else if (relation.getObjectIds() instanceof BasicDBObject) {
5958
if (FetchType.EAGER.equals(relation.getFetchType())) {
60-
source.put(relation.getFieldName(), DatabaseLoader.getDocumentByPropertyValue(mongoOperations, relation.getObjectIds(),
59+
source.put(relation.getFieldName(), DatabaseLoader.getDocumentByPropertyValue(mongoOperations, mapIdentifier(relation.getObjectIds()),
6160
relation.getReferencedPropertyName(), collection));
6261
} else {
63-
BasicDBObject object = new BasicDBObject();
64-
object.put("_id", relation.getObjectIds());
65-
source.put(relation.getFieldName(), object);
62+
source.put(relation.getFieldName(), relation.getObjectIds());
6663
}
6764
}
6865
}

src/test/java/io/github/kaiso/relmongo/data/model/Person.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,19 @@ public class Person {
1717
private String email;
1818

1919
@OneToMany(fetch=FetchType.EAGER)
20-
@JoinProperty(name="cars_ids")
20+
@JoinProperty(name="carsrefs")
2121
private List<Car> cars;
2222

2323
@OneToMany(fetch=FetchType.LAZY)
24-
@JoinProperty(name="houses_ids")
24+
@JoinProperty(name="housesrefs")
2525
private List<House> houses;
2626

2727
@OneToOne(fetch=FetchType.EAGER)
28-
@JoinProperty(name = "passportId")
28+
@JoinProperty(name = "passportref")
2929
private Passport passport;
3030

3131
@OneToOne(fetch=FetchType.LAZY)
32-
@JoinProperty(name = "drivingLicenseId")
32+
@JoinProperty(name = "drivingLicenseref")
3333
private DrivingLicense drivingLicense;
3434

3535
public String getName() {

src/test/java/io/github/kaiso/relmongo/tests/PersonRepositoryTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.github.kaiso.relmongo.tests;
22

3+
import com.mongodb.BasicDBObject;
34
import com.mongodb.DBObject;
45

56
import io.github.kaiso.relmongo.data.model.Car;
@@ -101,7 +102,9 @@ public void shouldPersistOnlyReferencedPropertyOnOneToOneRelation() {
101102
assertNull(personNoRelational.get("passport"));
102103
System.out.println("db id" + personNoRelational.get("passportId"));
103104
System.out.println("relational id" + passport.getId());
104-
assertEquals(personNoRelational.get("passportId"), passport.getId());
105+
BasicDBObject obj = new BasicDBObject();
106+
obj.put("_id", passport.getId());
107+
assertEquals(personNoRelational.get("passportref"), obj);
105108
}
106109

107110
@Test

0 commit comments

Comments
 (0)