Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用SQL Server在grails上映射映射数据类型_Sql Server_Grails_Map_Gorm - Fatal编程技术网

Sql server 使用SQL Server在grails上映射映射数据类型

Sql server 使用SQL Server在grails上映射映射数据类型,sql-server,grails,map,gorm,Sql Server,Grails,Map,Gorm,我有一个名为Regra的域类,其代码如下: Map<String, Permissao> permissoes = [:] static hasMany = [permissoes: Permissao] 如果我对Regradomain类做了任何更改(甚至添加了一个空行),并等待Grails重新加载这个类,那么一切都正常 这是我在Regra表已经有一些数据后重新启动服务器时得到的堆栈跟踪: 2014-04-04 08:42:09,281 [Compass Gps Index [po

我有一个名为
Regra
的域类,其代码如下:

Map<String, Permissao> permissoes = [:]
static hasMany = [permissoes: Permissao]
如果我对
Regra
domain类做了任何更改(甚至添加了一个空行),并等待Grails重新加载这个类,那么一切都正常

这是我在Regra表已经有一些数据后重新启动服务器时得到的堆栈跟踪:

2014-04-04 08:42:09,281 [Compass Gps Index [pool-8-thread-14]] ERROR indexer.ScrollableHibernateIndexEntitiesIndexer  - {hibernate}: Failed to index the database
Message: org.hibernate.collection.PersistentMap cannot be cast to java.lang.Number
    Line | Method
->>   38 | doToString               in org.compass.core.converter.basic.AbstractNumberConverter
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    189 | toString                 in org.compass.core.converter.basic.AbstractBasicConverter
|     54 | marshall . . . . . . . . in     ''
|    435 | convertId                in org.compass.core.converter.mapping.osem.ClassMappingConverter
|    410 | marshallIds . . . . . .  in     ''
|     87 | marshallIds              in org.compass.core.marshall.DefaultMarshallingStrategy
|     76 | doMarshall . . . . . . . in org.compass.core.converter.mapping.osem.ReferenceMappingConverter
|     48 | marshall                 in org.compass.core.converter.mapping.osem.AbstractRefAliasMappingConverter
|    213 | doMarshall . . . . . . . in org.compass.core.converter.mapping.osem.ClassMappingConverter
|     97 | marshall                 in     ''
|    154 | marshall . . . . . . . . in org.compass.core.marshall.DefaultMarshallingStrategy
|    408 | create                   in org.compass.core.impl.DefaultCompassSession
|    397 | create . . . . . . . . . in     ''
|    305 | create                   in org.compass.core.impl.ExistingCompassSession
|    212 | flush . . . . . . . . .  in org.compass.gps.device.hibernate.indexer.ScrollableHibernateIndexEntitiesIndexer$RowBuffer
|    206 | close                    in     ''
|    151 | performIndex . . . . . . in org.compass.gps.device.hibernate.indexer.ScrollableHibernateIndexEntitiesIndexer
|    104 | doInCompassWithoutResult in org.compass.gps.device.support.parallel.ConcurrentParallelIndexExecutor$1$1
|     29 | doInCompass . . . . . .  in org.compass.core.CompassCallbackWithoutResult
|    133 | execute                  in org.compass.core.CompassTemplate
|    147 | executeForIndex . . . .  in org.compass.gps.impl.SingleCompassGps
|    102 | call                     in org.compass.gps.device.support.parallel.ConcurrentParallelIndexExecutor$1
|    262 | run . . . . . . . . . .  in java.util.concurrent.FutureTask
|   1145 | runWorker                in java.util.concurrent.ThreadPoolExecutor
|    615 | run . . . . . . . . . .  in java.util.concurrent.ThreadPoolExecutor$Worker
^    744 | run                      in java.lang.Thread

Error |
2014-04-04 08:42:09,615 [localhost-startStop-1] ERROR context.GrailsContextLoader  - Error initializing the application: Failed to index, execution exception; nested exception is java.util.concurrent.ExecutionException: org.compass.gps.device.hibernate.HibernateGpsDeviceException: {hibernate}: Failed to index the database; nested exception is java.lang.ClassCastException: org.hibernate.collection.PersistentMap cannot be cast to java.lang.Number
Message: Failed to index, execution exception; nested exception is java.util.concurrent.ExecutionException: org.compass.gps.device.hibernate.HibernateGpsDeviceException: {hibernate}: Failed to index the database; nested exception is java.lang.ClassCastException: org.hibernate.collection.PersistentMap cannot be cast to java.lang.Number
    Line | Method
->>  126 | performIndex       in org.compass.gps.device.support.parallel.ConcurrentParallelIndexExecutor
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    119 | index              in org.compass.gps.device.support.parallel.AbstractParallelGpsDevice
|     42 | buildIndexIfNeeded in org.compass.gps.impl.DefaultReplaceIndexCallback
|    281 | firstStep          in org.compass.core.lucene.engine.manager.DefaultLuceneSearchEngineIndexManager$ReplaceIndexOperationCallback
|    218 | doOperate . . . .  in org.compass.core.lucene.engine.manager.DefaultLuceneSearchEngineIndexManager
|    266 | doReplaceIndex     in     ''
|    261 | replaceIndex . . . in     ''
|    118 | doIndex            in org.compass.gps.impl.SingleCompassGps
|    154 | index . . . . . .  in org.compass.gps.impl.AbstractCompassGps
|    128 | index              in     ''
|     49 | index . . . . . .  in grails.plugin.searchable.internal.compass.CompassGpsUtils
|    157 | doCall             in SearchableGrailsPlugin$_closure3
|    262 | run . . . . . . .  in java.util.concurrent.FutureTask
|   1145 | runWorker          in java.util.concurrent.ThreadPoolExecutor
|    615 | run . . . . . . .  in java.util.concurrent.ThreadPoolExecutor$Worker
^    744 | run                in java.lang.Thread

Caused by ExecutionException: org.compass.gps.device.hibernate.HibernateGpsDeviceException: {hibernate}: Failed to index the database; nested exception is java.lang.ClassCastException: org.hibernate.collection.PersistentMap cannot be cast to java.lang.Number
->>  122 | report             in java.util.concurrent.FutureTask
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    188 | get                in     ''
|    122 | performIndex . . . in org.compass.gps.device.support.parallel.ConcurrentParallelIndexExecutor
|    119 | index              in org.compass.gps.device.support.parallel.AbstractParallelGpsDevice
|     42 | buildIndexIfNeeded in org.compass.gps.impl.DefaultReplaceIndexCallback
|    281 | firstStep          in org.compass.core.lucene.engine.manager.DefaultLuceneSearchEngineIndexManager$ReplaceIndexOperationCallback
|    218 | doOperate . . . .  in org.compass.core.lucene.engine.manager.DefaultLuceneSearchEngineIndexManager
|    266 | doReplaceIndex     in     ''
|    261 | replaceIndex . . . in     ''
|    118 | doIndex            in org.compass.gps.impl.SingleCompassGps
|    154 | index . . . . . .  in org.compass.gps.impl.AbstractCompassGps
|    128 | index              in     ''
|     49 | index . . . . . .  in grails.plugin.searchable.internal.compass.CompassGpsUtils
|    157 | doCall             in SearchableGrailsPlugin$_closure3
|    262 | run . . . . . . .  in java.util.concurrent.FutureTask
|   1145 | runWorker          in java.util.concurrent.ThreadPoolExecutor
|    615 | run . . . . . . .  in java.util.concurrent.ThreadPoolExecutor$Worker
^    744 | run                in java.lang.Thread

Caused by HibernateGpsDeviceException: {hibernate}: Failed to index the database; nested exception is java.lang.ClassCastException: org.hibernate.collection.PersistentMap cannot be cast to java.lang.Number
->>  172 | performIndex       in org.compass.gps.device.hibernate.indexer.ScrollableHibernateIndexEntitiesIndexer
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    104 | doInCompassWithoutResult in org.compass.gps.device.support.parallel.ConcurrentParallelIndexExecutor$1$1
|     29 | doInCompass . . .  in org.compass.core.CompassCallbackWithoutResult
|    133 | execute            in org.compass.core.CompassTemplate
|    147 | executeForIndex .  in org.compass.gps.impl.SingleCompassGps
|    102 | call               in org.compass.gps.device.support.parallel.ConcurrentParallelIndexExecutor$1
|    262 | run . . . . . . .  in java.util.concurrent.FutureTask
|   1145 | runWorker          in java.util.concurrent.ThreadPoolExecutor
|    615 | run . . . . . . .  in java.util.concurrent.ThreadPoolExecutor$Worker
^    744 | run                in java.lang.Thread

Caused by ClassCastException: org.hibernate.collection.PersistentMap cannot be cast to java.lang.Number
->>   38 | doToString         in org.compass.core.converter.basic.AbstractNumberConverter
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    189 | toString           in org.compass.core.converter.basic.AbstractBasicConverter
|     54 | marshall . . . . . in     ''
|    435 | convertId          in org.compass.core.converter.mapping.osem.ClassMappingConverter
|    410 | marshallIds . . .  in     ''
|     87 | marshallIds        in org.compass.core.marshall.DefaultMarshallingStrategy
|     76 | doMarshall . . . . in org.compass.core.converter.mapping.osem.ReferenceMappingConverter
|     48 | marshall           in org.compass.core.converter.mapping.osem.AbstractRefAliasMappingConverter
|    213 | doMarshall . . . . in org.compass.core.converter.mapping.osem.ClassMappingConverter
|     97 | marshall           in     ''
|    154 | marshall . . . . . in org.compass.core.marshall.DefaultMarshallingStrategy
|    408 | create             in org.compass.core.impl.DefaultCompassSession
|    397 | create . . . . . . in     ''
|    305 | create             in org.compass.core.impl.ExistingCompassSession
|    212 | flush . . . . . .  in org.compass.gps.device.hibernate.indexer.ScrollableHibernateIndexEntitiesIndexer$RowBuffer
|    206 | close              in     ''
|    151 | performIndex . . . in org.compass.gps.device.hibernate.indexer.ScrollableHibernateIndexEntitiesIndexer
|    104 | doInCompassWithoutResult in org.compass.gps.device.support.parallel.ConcurrentParallelIndexExecutor$1$1
|     29 | doInCompass . . .  in org.compass.core.CompassCallbackWithoutResult
|    133 | execute            in org.compass.core.CompassTemplate
|    147 | executeForIndex .  in org.compass.gps.impl.SingleCompassGps
|    102 | call               in org.compass.gps.device.support.parallel.ConcurrentParallelIndexExecutor$1
|    262 | run . . . . . . .  in java.util.concurrent.FutureTask
|   1145 | runWorker          in java.util.concurrent.ThreadPoolExecutor
|    615 | run . . . . . . .  in java.util.concurrent.ThreadPoolExecutor$Worker
^    744 | run                in java.lang.Thread

从stacktrace中可以看出,异常似乎是在索引操作中抛出的。这可能是域类和搜索索引之间的映射问题。

索引操作中是否引发此异常?据我所知,这可能是域类和搜索索引之间的映射问题。将这两个域类添加到问题中。如果无法添加实际类,则至少反映实际实现。@ManuelVio我确实安装了
searchable
插件。我从searchable的索引中排除了
permissoes
,它起了作用。(
static searchable={except=['id','version','permissoes']}
谢谢,请提交一个答案,这样我就可以颁发奖项了。
2014-04-04 08:42:09,281 [Compass Gps Index [pool-8-thread-14]] ERROR indexer.ScrollableHibernateIndexEntitiesIndexer  - {hibernate}: Failed to index the database
Message: org.hibernate.collection.PersistentMap cannot be cast to java.lang.Number
    Line | Method
->>   38 | doToString               in org.compass.core.converter.basic.AbstractNumberConverter
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    189 | toString                 in org.compass.core.converter.basic.AbstractBasicConverter
|     54 | marshall . . . . . . . . in     ''
|    435 | convertId                in org.compass.core.converter.mapping.osem.ClassMappingConverter
|    410 | marshallIds . . . . . .  in     ''
|     87 | marshallIds              in org.compass.core.marshall.DefaultMarshallingStrategy
|     76 | doMarshall . . . . . . . in org.compass.core.converter.mapping.osem.ReferenceMappingConverter
|     48 | marshall                 in org.compass.core.converter.mapping.osem.AbstractRefAliasMappingConverter
|    213 | doMarshall . . . . . . . in org.compass.core.converter.mapping.osem.ClassMappingConverter
|     97 | marshall                 in     ''
|    154 | marshall . . . . . . . . in org.compass.core.marshall.DefaultMarshallingStrategy
|    408 | create                   in org.compass.core.impl.DefaultCompassSession
|    397 | create . . . . . . . . . in     ''
|    305 | create                   in org.compass.core.impl.ExistingCompassSession
|    212 | flush . . . . . . . . .  in org.compass.gps.device.hibernate.indexer.ScrollableHibernateIndexEntitiesIndexer$RowBuffer
|    206 | close                    in     ''
|    151 | performIndex . . . . . . in org.compass.gps.device.hibernate.indexer.ScrollableHibernateIndexEntitiesIndexer
|    104 | doInCompassWithoutResult in org.compass.gps.device.support.parallel.ConcurrentParallelIndexExecutor$1$1
|     29 | doInCompass . . . . . .  in org.compass.core.CompassCallbackWithoutResult
|    133 | execute                  in org.compass.core.CompassTemplate
|    147 | executeForIndex . . . .  in org.compass.gps.impl.SingleCompassGps
|    102 | call                     in org.compass.gps.device.support.parallel.ConcurrentParallelIndexExecutor$1
|    262 | run . . . . . . . . . .  in java.util.concurrent.FutureTask
|   1145 | runWorker                in java.util.concurrent.ThreadPoolExecutor
|    615 | run . . . . . . . . . .  in java.util.concurrent.ThreadPoolExecutor$Worker
^    744 | run                      in java.lang.Thread

Error |
2014-04-04 08:42:09,615 [localhost-startStop-1] ERROR context.GrailsContextLoader  - Error initializing the application: Failed to index, execution exception; nested exception is java.util.concurrent.ExecutionException: org.compass.gps.device.hibernate.HibernateGpsDeviceException: {hibernate}: Failed to index the database; nested exception is java.lang.ClassCastException: org.hibernate.collection.PersistentMap cannot be cast to java.lang.Number
Message: Failed to index, execution exception; nested exception is java.util.concurrent.ExecutionException: org.compass.gps.device.hibernate.HibernateGpsDeviceException: {hibernate}: Failed to index the database; nested exception is java.lang.ClassCastException: org.hibernate.collection.PersistentMap cannot be cast to java.lang.Number
    Line | Method
->>  126 | performIndex       in org.compass.gps.device.support.parallel.ConcurrentParallelIndexExecutor
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    119 | index              in org.compass.gps.device.support.parallel.AbstractParallelGpsDevice
|     42 | buildIndexIfNeeded in org.compass.gps.impl.DefaultReplaceIndexCallback
|    281 | firstStep          in org.compass.core.lucene.engine.manager.DefaultLuceneSearchEngineIndexManager$ReplaceIndexOperationCallback
|    218 | doOperate . . . .  in org.compass.core.lucene.engine.manager.DefaultLuceneSearchEngineIndexManager
|    266 | doReplaceIndex     in     ''
|    261 | replaceIndex . . . in     ''
|    118 | doIndex            in org.compass.gps.impl.SingleCompassGps
|    154 | index . . . . . .  in org.compass.gps.impl.AbstractCompassGps
|    128 | index              in     ''
|     49 | index . . . . . .  in grails.plugin.searchable.internal.compass.CompassGpsUtils
|    157 | doCall             in SearchableGrailsPlugin$_closure3
|    262 | run . . . . . . .  in java.util.concurrent.FutureTask
|   1145 | runWorker          in java.util.concurrent.ThreadPoolExecutor
|    615 | run . . . . . . .  in java.util.concurrent.ThreadPoolExecutor$Worker
^    744 | run                in java.lang.Thread

Caused by ExecutionException: org.compass.gps.device.hibernate.HibernateGpsDeviceException: {hibernate}: Failed to index the database; nested exception is java.lang.ClassCastException: org.hibernate.collection.PersistentMap cannot be cast to java.lang.Number
->>  122 | report             in java.util.concurrent.FutureTask
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    188 | get                in     ''
|    122 | performIndex . . . in org.compass.gps.device.support.parallel.ConcurrentParallelIndexExecutor
|    119 | index              in org.compass.gps.device.support.parallel.AbstractParallelGpsDevice
|     42 | buildIndexIfNeeded in org.compass.gps.impl.DefaultReplaceIndexCallback
|    281 | firstStep          in org.compass.core.lucene.engine.manager.DefaultLuceneSearchEngineIndexManager$ReplaceIndexOperationCallback
|    218 | doOperate . . . .  in org.compass.core.lucene.engine.manager.DefaultLuceneSearchEngineIndexManager
|    266 | doReplaceIndex     in     ''
|    261 | replaceIndex . . . in     ''
|    118 | doIndex            in org.compass.gps.impl.SingleCompassGps
|    154 | index . . . . . .  in org.compass.gps.impl.AbstractCompassGps
|    128 | index              in     ''
|     49 | index . . . . . .  in grails.plugin.searchable.internal.compass.CompassGpsUtils
|    157 | doCall             in SearchableGrailsPlugin$_closure3
|    262 | run . . . . . . .  in java.util.concurrent.FutureTask
|   1145 | runWorker          in java.util.concurrent.ThreadPoolExecutor
|    615 | run . . . . . . .  in java.util.concurrent.ThreadPoolExecutor$Worker
^    744 | run                in java.lang.Thread

Caused by HibernateGpsDeviceException: {hibernate}: Failed to index the database; nested exception is java.lang.ClassCastException: org.hibernate.collection.PersistentMap cannot be cast to java.lang.Number
->>  172 | performIndex       in org.compass.gps.device.hibernate.indexer.ScrollableHibernateIndexEntitiesIndexer
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    104 | doInCompassWithoutResult in org.compass.gps.device.support.parallel.ConcurrentParallelIndexExecutor$1$1
|     29 | doInCompass . . .  in org.compass.core.CompassCallbackWithoutResult
|    133 | execute            in org.compass.core.CompassTemplate
|    147 | executeForIndex .  in org.compass.gps.impl.SingleCompassGps
|    102 | call               in org.compass.gps.device.support.parallel.ConcurrentParallelIndexExecutor$1
|    262 | run . . . . . . .  in java.util.concurrent.FutureTask
|   1145 | runWorker          in java.util.concurrent.ThreadPoolExecutor
|    615 | run . . . . . . .  in java.util.concurrent.ThreadPoolExecutor$Worker
^    744 | run                in java.lang.Thread

Caused by ClassCastException: org.hibernate.collection.PersistentMap cannot be cast to java.lang.Number
->>   38 | doToString         in org.compass.core.converter.basic.AbstractNumberConverter
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    189 | toString           in org.compass.core.converter.basic.AbstractBasicConverter
|     54 | marshall . . . . . in     ''
|    435 | convertId          in org.compass.core.converter.mapping.osem.ClassMappingConverter
|    410 | marshallIds . . .  in     ''
|     87 | marshallIds        in org.compass.core.marshall.DefaultMarshallingStrategy
|     76 | doMarshall . . . . in org.compass.core.converter.mapping.osem.ReferenceMappingConverter
|     48 | marshall           in org.compass.core.converter.mapping.osem.AbstractRefAliasMappingConverter
|    213 | doMarshall . . . . in org.compass.core.converter.mapping.osem.ClassMappingConverter
|     97 | marshall           in     ''
|    154 | marshall . . . . . in org.compass.core.marshall.DefaultMarshallingStrategy
|    408 | create             in org.compass.core.impl.DefaultCompassSession
|    397 | create . . . . . . in     ''
|    305 | create             in org.compass.core.impl.ExistingCompassSession
|    212 | flush . . . . . .  in org.compass.gps.device.hibernate.indexer.ScrollableHibernateIndexEntitiesIndexer$RowBuffer
|    206 | close              in     ''
|    151 | performIndex . . . in org.compass.gps.device.hibernate.indexer.ScrollableHibernateIndexEntitiesIndexer
|    104 | doInCompassWithoutResult in org.compass.gps.device.support.parallel.ConcurrentParallelIndexExecutor$1$1
|     29 | doInCompass . . .  in org.compass.core.CompassCallbackWithoutResult
|    133 | execute            in org.compass.core.CompassTemplate
|    147 | executeForIndex .  in org.compass.gps.impl.SingleCompassGps
|    102 | call               in org.compass.gps.device.support.parallel.ConcurrentParallelIndexExecutor$1
|    262 | run . . . . . . .  in java.util.concurrent.FutureTask
|   1145 | runWorker          in java.util.concurrent.ThreadPoolExecutor
|    615 | run . . . . . . .  in java.util.concurrent.ThreadPoolExecutor$Worker
^    744 | run                in java.lang.Thread