私は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の24行目あたり-app/controllers / ch / teamrg / test / BookController.groovy PageFragmentCachingFilter.javaの186行目あたり 183:if(method == null){ 184:log.debug( "{}:{} {}のキャッシュ可能なメソッドが見つかりません"、 185:new Object [] {request.getMethod()、request.getRequestURI()、getContext()}); 186:chain.doFilter(request、response); 187:戻る; 188:} 189:コレクションcacheOperations = cacheOperationSource.getCacheOperations( AbstractFilter.javaの63行目あたり 60:試してみてください{ 61://二重gzipを回避するためにRequestDispatcher転送に設定されたNO_FILTER 62:if(filterNotDisabled(request)){ 63:doFilter(リクエスト、レスポンス、チェーン); 64:} 65:else { 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 | org.grails.datastore.gorm.GormInstanceApiのdoSave | 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にブレークポイントを設定しました。アプリケーションがそこに到達したら、org.grails.datastore.mapping.model.types.conversion.DefaultConversionServiceのインスタンスを返すgetMappingContext()。getConversionService()部分を解決できます。このインスタンスには、ObjectIdおよびBinaryのコンバーターを含む10個のコンバーターが構成されています。文字列とUUIDの間で変換できるように、独自のコンバーターをどこで構成できるかを今自問しています。
Grailsを初めて使用するため、必要なJavaファイルをどこに配置するか、どのファイルにどのような構成を配置する必要があるかがわかりません。誰かが私を正しい方向に向けることができればクールだろう。