Вот часть (заводной) класса, который хранит некоторые данные в MongoDB:заводного объект и примитивная путаница
long save(Object data) {
def customerReference = getNextCustomerReference()
def map = ['customerReference': customerReference, 'data': data, 'created': new Date()]
BasicDBObject basicDBObject = new BasicDBObject(map)
collection.insert(basicDBObject)
customerReference
}
private long getNextCustomerReference() {
1234
}
хотя я прямо сказал, что я хочу примитивный долго, что заканчивается в базе данных является объект:
{ "_id" : ObjectId("52f3c0597d844b0fcee29013"), "customerReference" : NumberLong(1234), "data" : "original data", "created" : ISODate("2014-02-06T17:03:21.411Z") }
Однако, если изменить тип возвращаемого значения DEF для частного метода это происходит:
{ "_id" : ObjectId("52f3c1477d84698725f50fe5"), "customerReference" : 1234, "data" : "data", "created" : ISODate("2014-02-06T17:07:19.055Z") }
, которого я хочу (примитив, хранящийся в db).
Может кто-нибудь объяснить это, потому что его озадачивает. Разумеется, если я уйду с пути, чтобы определить тип, Groovy должен попробовать и почтить его?
Что делать, если вы делаете 'long customerReference = getNextCustomerReference()'? –
входит в качестве объекта. Еще более странно, если я это сделаю и создаю возвращаемый тип метода def, он будет использоваться как объект. – FinalFive
Что делать, если вы пропустите 'BasicDBObject' и переходите прямо к' collection.insert (map) '? Я думаю, что это разрешено –