Skip to content

GPMONGODB-318: HashMaps with Object values do not persist to database #304

@graemerocher

Description

@graemerocher

Original Reporter: benjaminjsanders
Environment: Grails 2.2.3
Version: 1.3.0.GA
Migrated From: http://jira.grails.org/browse/GPMONGODB-318

When attempting to create a domain object (say, Author) which has a HashMap<String,MyObject> the parent object (Author) saves to the database without the HashMap. To clarify, using the following code:

{code:borderStyle=solid}
class MyWrapperObject {
String name;
Map embeddedObjects;

static hasMany = [embeddedObjects: MyEmbeddedObject];
static embedded = ['embeddedObjects']

}
{code}

with the following bootstrap code:

{code:borderStyle=solid}
def init = { servletContext ->
def savedObject = new MyWrapperObject();
savedObject.name = "test1";
savedObject.embeddedObjects = new HashMap<String,MyEmbeddedObject>();
savedObject.embeddedObjects.put("embedded1", new MyEmbeddedObject("test1",1));
savedObject.embeddedObjects.put("embedded2", new MyEmbeddedObject("test2",2));
savedObject.embeddedObjects.put("embedded3", new MyEmbeddedObject("test3",3));
savedObject.save(flush:true);
System.out.println(savedObject.toString())
}
{code}

produces the following object in the database:
{code:borderStyle=solid}
{
_id: 1,
name: "test1",
version: 0
}
{code}

Interestingly, changing the parent object markup to:
{code:borderStyle=solid}
class MyWrapperObject {
String name;
Map embeddedObjects;
}
{code}

I get this object in the database:
{
_id: 2,
embeddedObjects: {
embedded1: null,
embedded2: null,
embedded3: null
},
name: "test1",
version: 0
}

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions