В настоящее время я переношу проект Grails 2.4 на Grails 3.0.10 или 3.1.0.M3.
В Grails 2.4 следующий метод представляет собой обходной путь, позволяющий определить, содержит ли класс предметной области составной первичный ключ:
void isCompositePrimaryKey(GrailsDomainClass targetClass) {
def binder = new GrailsDomainBinder()
def idMapping = binder.getMapping(targetClass).identity
return idMapping instanceof org.codehaus.groovy.grails.orm.hibernate.cfg.CompositeIdentity
}
Я не могу найти способ обнаружить это в общедоступном API.
Хотя GrailsDomainClass все еще существует в исходном коде реализации, я не могу получить к нему доступ из своего проекта и не могу найти старый CompositeIdentity.
Альтернативной стратегией может быть использование targetClass.getIdentifier().getType()
, но я не могу найти документацию о том, как определить составной ключ с использованием типа идентификатора.