Closed
Description
Assume the following class
@Document(collection = "testDocuments")
public class TestDocument {
@Id
private UUID id;
@DocumentReference
private List<TestDocument> children;
}
then the following test fails
@Test
void testDocumentChildrenTest(@Autowired MongoTemplate mongoTemplate) {
TestDocument parent = new TestDocument();
parent.setChildren(new ArrayList<>());
mongoTemplate.save(parent);
TestDocument child = new TestDocument();
mongoTemplate.save(child);
Query query = new Query(Criteria.where("id").is(parent.getId()));
Update update = new Update();
update.push("children").each(new Object[]{child});
var result = mongoTemplate.update(TestDocument.class)
.matching(query)
.apply(update)
.first();
TestDocument updated = mongoTemplate.findOne(query, TestDocument.class);
Assertions.assertEquals(1, updated.getChildren().size());
}
An identical test, replacing @DocumentReference with @DBREF succeeds.