【发布时间】:2013-02-07 06:56:47
【问题描述】:
我是 Grails 的新手,我尝试使用 UUID 类型的 id 持久化模型。我知道有 ObjectId,但现在我会坚持 UUID。
class Book {
UUID id
String title
}
我有一个启用脚手架的 BookController。当我现在加载控制器并尝试添加新书时,我从 Grails 收到以下错误消息:
错误 500:内部服务器错误 URI /GrailsTest/book/save 类 org.springframework.core.convert.ConverterNotFoundException 消息找不到能够从 java.lang.String 类型转换为 java.util.UUID 类型的转换器 grails-app/controllers/ch/teamrg/test/BookController.groovy 的第 24 行左右 PageFragmentCachingFilter.java 的第 186 行附近 183:如果(方法==空){ 184: log.debug("No cacheable method found for {}:{} {}", 185: 新对象 [] { request.getMethod(), request.getRequestURI(), getContext() }); 186:链.doFilter(请求,响应); 187:返回; 188:} 189:集合cacheOperations = cacheOperationSource.getCacheOperations( AbstractFilter.java 的第 63 行附近 60:试试{ 61: // 为 RequestDispatcher 转发设置 NO_FILTER 以避免双重 gzip 62: if (filterNotDisabled(request)) { 63:doFilter(请求,响应,链); 64:} 65:否则{ 66: 链.doFilter(req, res); 痕迹 线 |方法 ->> 18 |在 org.grails.datastore.mapping.model.types.conversion.DefaultConversionService 中转换 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | 365 | org.grails.datastore.mapping.engine.NativeEntryEntityPersister 中的 cacheNativeEntry | 725 |持久实体。在 '' | 125 |坚持在 org.grails.datastore.mapping.engine.EntityPersister |第479章坚持。 . . .在 org.grails.datastore.mapping.core.AbstractSession | 166 | doSave 在 org.grails.datastore.gorm.GormInstanceApi | 143 |呼叫。 . . . .在 org.grails.datastore.gorm.GormInstanceApi$_save_closure4 | 301 |在 org.grails.datastore.mapping.core.DatastoreUtils 中执行 | 34 |执行 。 . . .在 org.grails.datastore.gorm.AbstractDatastoreApi | 142 |保存在 org.grails.datastore.gorm.GormInstanceApi | 258 |称呼 。 . . . . .在 org.grails.datastore.gorm.InstanceMethodInvokingClosure | 24 |保存在 BookController.groovy | 186 |过滤器。 . . .在 PageFragmentCachingFilter.java | 63 | AbstractFilter.java 中的 doFilter |第886章运行任务。 . . .在 java.util.concurrent.ThreadPoolExecutor$Worker | 908 |跑进 '' ^ 680 |跑步 。 . . . . .在 java.lang.Thread我在 org.grails.datastore.mapping.engine.NativeEntryEntityPersister 设置了一个断点。当应用程序到达那里时,我可以解析返回 org.grails.datastore.mapping.model.types.conversion.DefaultConversionService 实例的 getMappingContext().getConversionService() 部分。此实例配置了 10 个转换器,包括 ObjectId 和 Binary 的转换器。我现在问自己,我可以在哪里配置我自己的转换器,以便我可以在 String 和 UUID 之间进行转换?
因为我是 Grails 的新手,所以我不知道将所需的 Java 文件放在哪里,以及我必须在哪个文件中放置什么样的配置。如果有人能指出我正确的方向会很酷。
【问题讨论】:
标签: mongodb grails grails-orm