Я новичок в Grails, и я попытался сохранить модель с идентификатором типа UUID. Я знаю, что есть ObjectId, но на данный момент я бы продолжал UUID.Проблемы с UUID с Grails, GORM и MongoDB
class Book {
UUID id
String title
}
У меня есть BookController, где я включил строительные леса. Когда я в настоящее время загрузить контроллер и попытаться добавить новую книгу, я получаю следующее сообщение об ошибке с Grails:
Error 500: Internal Server Error URI /GrailsTest/book/save Class org.springframework.core.convert.ConverterNotFoundException Message No converter found capable of converting from type java.lang.String to type java.util.UUID Around line 24 of grails-app/controllers/ch/teamrg/test/BookController.groovy Around line 186 of PageFragmentCachingFilter.java 183: if(method == null) { 184: log.debug("No cacheable method found for {}:{} {}", 185: new Object[] { request.getMethod(), request.getRequestURI(), getContext() }); 186: chain.doFilter(request, response); 187: return; 188: } 189: Collection cacheOperations = cacheOperationSource.getCacheOperations( Around line 63 of AbstractFilter.java 60: try { 61: // NO_FILTER set for RequestDispatcher forwards to avoid double gzipping 62: if (filterNotDisabled(request)) { 63: doFilter(request, response, chain); 64: } 65: else { 66: chain.doFilter(req, res); Trace Line | Method ->> 18 | convert in org.grails.datastore.mapping.model.types.conversion.DefaultConversionService - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | 365 | cacheNativeEntry in org.grails.datastore.mapping.engine.NativeEntryEntityPersister | 725 | persistEntity . in '' | 125 | persist in org.grails.datastore.mapping.engine.EntityPersister | 479 | persist . . . . in org.grails.datastore.mapping.core.AbstractSession | 166 | doSave in org.grails.datastore.gorm.GormInstanceApi | 143 | doCall . . . . . in org.grails.datastore.gorm.GormInstanceApi$_save_closure4 | 301 | execute in org.grails.datastore.mapping.core.DatastoreUtils | 34 | execute . . . . in org.grails.datastore.gorm.AbstractDatastoreApi | 142 | save in org.grails.datastore.gorm.GormInstanceApi | 258 | call . . . . . . in org.grails.datastore.gorm.InstanceMethodInvokingClosure | 24 | save in BookController.groovy | 186 | doFilter . . . . in PageFragmentCachingFilter.java | 63 | doFilter in AbstractFilter.java | 886 | runTask . . . . in java.util.concurrent.ThreadPoolExecutor$Worker | 908 | run in '' ^ 680 | run . . . . . . in java.lang.Thread
я поставил точку останова на org.grails.datastore.mapping.engine.NativeEntryEntityPersister. Когда приложение попадет туда, я могу разрешить часть getMappingContext(). GetConversionService(), которая возвращает экземпляр org.grails.datastore.mapping.model.types.conversion.DefaultConversionService. Этот экземпляр имеет 10 преобразователей, включая конвертеры для ObjectId и Binary. Я спрашиваю себя, где я могу настроить свой собственный конвертер, чтобы я мог конвертировать между String и UUID?
Поскольку я новичок в Grails, я не знаю, где разместить требуемые файлы Java и в каком файле я должен указать, какую конфигурацию. Было бы здорово, если бы кто-то мог указать мне в правильном направлении.