Remove additional object properties from a GORM for MongoDB query output

330 Views Asked by At

I'm using GORM for MongoDB in a standalone groovy application (no grails). I need to render these objects as json, but GORM results contains additional properties that must be "hidden" in the returned json output.

How can I remove them for every mapped object and get only plain objects?

A solution without custom code for every entity will be best.

@Entity
class Invoice {
    String name
    List<InvoiceItem> items

    static embedded = ['items']
}
@Entity
class InvoiceItem {
    String description
    int qt
}

Printed properties of the object def i = Invoice.getByName("MyFirstInvoice")

[
collectionName:invoice, 
gormPersistentEntity:Invoice, 
async:org.grails.datastore.gorm.async.GormAsyncStaticApi@6991948, 
id:3, 
gormDynamicFinders: [
    org.grails.datastore.gorm.finders.FindOrCreateByFinder@3337ff9, org.grails.datastore.gorm.finders.FindOrSaveByFinder@6bb41fe3, org.grails.datastore.gorm.finders.FindByFinder@517fcc04, org.grails.datastore.gorm.finders.FindAllByFinder@1fe2dc3a, org.grails.datastore.gorm.finders.FindAllByBooleanFinder@736a488, org.grails.datastore.gorm.finders.FindByBooleanFinder@4c36e88a, org.grails.datastore.gorm.finders.CountByFinder@630612e4, org.grails.datastore.gorm.finders.ListOrderByFinder@6a0c11b2], 
items:[InvoiceItem : (unsaved), InvoiceItem : (unsaved)],
name:MyFirstInvoice, 
DB:com.mongodb.MongoDatabaseImpl@58acea9f, 
attached:false, 
class:class Invoice, 
version:0, 
dirtyPropertyNames:[], 
errors:org.grails.datastore.mapping.validation.ValidationErrors: 0 errors, 
collection:com.mongodb.MongoCollectionImpl@23253bb8, 
transients:[], 
dirty:false, count:2, 
embedded:[items]
]

The expected output is something like:

[name:MyFirstInvoice, items:[[description:one, qt:1], [description:two, qt:2]]]
0

There are 0 best solutions below