in grails-datastore-gorm-hibernate/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateMappingBuilder.groovy [385:427]
void id(Map args) {
if (args.composite) {
mapping.identity = new CompositeIdentity(propertyNames:args.composite as String[])
if (args.compositeClass) {
mapping.identity.compositeClass = args.compositeClass
}
}
else {
if (args?.generator) {
mapping.identity.generator = args.remove('generator')
}
if (args?.name) {
mapping.identity.name = args.remove('name').toString()
}
if (args?.params) {
def params = args.remove('params')
for (entry in params) {
params[entry.key] = entry.value?.toString()
}
mapping.identity.params = params
}
if (args?.natural) {
def naturalArgs = args.remove('natural')
def propertyNames = naturalArgs instanceof Map ? naturalArgs.remove('properties') : naturalArgs
if (propertyNames) {
def ni = new NaturalId()
ni.mutable = (naturalArgs instanceof Map) && naturalArgs.mutable ?: false
if (propertyNames instanceof List) {
ni.propertyNames = propertyNames
}
else {
ni.propertyNames = [propertyNames.toString()]
}
mapping.identity.natural = ni
}
}
// still more arguments?
if (args) {
handleMethodMissing("id", [args] as Object[])
}
}
}