gpt4 book ai didi

mongodb - 带有Grails,GORM和MongoDB的UUID的问题

转载 作者:行者123 更新时间:2023-12-02 14:53:51 26 4
gpt4 key购买 nike

我是Grails的新手,所以我尝试使用ID为UUID类型的模型进行持久化。我知道这里有ObjectId,但现在我将保留UUID。

class Book {
UUID id
String title
}

我有一个BookController,其中启用了脚手架。现在,当我加载 Controller 并尝试添加新书时,我从Grails收到以下错误消息:

错误500:内部服务器错误
URI / GrailsTest / book /保存
类org.springframework.core.convert.ConverterNotFoundException
消息未找到能够从java.lang.String类型转换为java.util.UUID类型的转换器
在grails-app / controllers / ch / teamrg / test / BookController.groovy的第24行周围
在PageFragmentCachingFilter.java的第186行附近
183:if(方法==空){
184:log.debug(“未找到{}:{} {}的可缓存方法”,
185:新建Object [] {request.getMethod(),request.getRequestURI(),getContext()});
186:chain.doFilter(请求,响应);
187:返回
188:}
189:集合cacheOperations = cacheOperationSource.getCacheOperations(
围绕AbstractFilter.java的第63行
60:尝试{
61://为RequestDispatcher转发设置NO_FILTER以避免双重gziping
62:如果(filterNotDisabled(request)){
63:doFilter(请求,响应,链);
64:}
65:否则{
66:chain.doFilter(req,res);
跟踪
线|方法
->> 18 |在org.grails.datastore.mapping.model.types.conversion.DefaultConversionService中进行转换
--------------------------------------
| 365 | org.grails.datastore.mapping.engine.NativeEntryEntityPersister中的cacheNativeEntry
| 725 | persistEntity。在''
| 125 |坚持在org.grails.datastore.mapping.engine.EntityPersister
| 479 |坚持。 。 。 。在org.grails.datastore.mapping.core.AbstractSession中
| 166 | doSave在org.grails.datastore.gorm.GormInstanceApi中
| 143 | doCall。 。 。 。 。在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 | doFilter。 。 。 。在PageFragmentCachingFilter.java中
| 63 | AbstractFilter.java中的doFilter
| 886 | runTask。 。 。 。在java.util.concurrent.ThreadPoolExecutor $ Worker中
| 908 |运行 ''
^ 680 |跑 。 。 。 。 。 。在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文件放在哪里以及必须在哪种文件中进行什么样的配置。如果有人能指出我正确的方向,那将很酷。

最佳答案

文档中有一个针对custom user types的 session 。

因此,您需要创建扩展AbstractMappingAwareCustomTypeMarshaller的类型类并将其注册为Spring Bean(请参阅文档最后)。

关于mongodb - 带有Grails,GORM和MongoDB的UUID的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15010941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com