2

GORM - MongoDB プラグインから DBCollection.insert(List, WriteConcern) を実行しようとしていますが、それを行う API が見つかりませんでした。80,000 を超えるレコードを挿入する必要がある場合、個々のドメインの保存に時間がかかりすぎます。

また、すべての grails ドメイン オブジェクトをデフォルト マッピングでステートレスにしました。

MongoTemplate を取得して、次のコードで一括挿入に使用しようとしたとき:

           MongoDatastore datastore = (MongoDatastore)appContext.mongoDatastore
    MongoTemplate mongoTemplate = datastore.getMongoTemplate(domainClass.gormPersistentEntity)
    mongoTemplate.setWriteConcern(WriteConcern.JOURNAL_SAFE);
    def converter = mongoTemplate.converter
    MongoSession mongoSession = (MongoSession)datastore.currentSession
    def collectionName = mongoSession.getCollectionName(domainClass.gormPersistentEntity)
    def collectionObject = getCollectionForEntity(mongoSession, mongoTemplate,domainClass.gormPersistentEntity )
    mongoTemplate.doInsertBatch(collectionName, dataToInsert, converter)

私が得ているエラーは次のとおりです: StackoverflowException :

    Caused by: java.lang.StackOverflowError
at java.util.HashMap$EntryIterator.<init>(HashMap.java:932)
at java.util.HashMap$EntryIterator.<init>(HashMap.java:932)
at java.util.HashMap.newEntryIterator(HashMap.java:946)
at java.util.HashMap$EntrySet.iterator(HashMap.java:1050)
at java.util.AbstractMap.hashCode(AbstractMap.java:492)
at org.springframework.util.ObjectUtils.nullSafeHashCode(ObjectUtils.java:336)
at org.springframework.data.util.TypeDiscoverer.hashCode(TypeDiscoverer.java:485)
at org.springframework.data.util.ClassTypeInformation.hashCode(ClassTypeInformation.java:39)
at java.util.HashMap.hash(HashMap.java:351)
at java.util.HashMap.getEntry(HashMap.java:443)
at java.util.HashMap.get(HashMap.java:405)
at org.springframework.data.convert.MappingContextTypeInformationMapper.createAliasFor(MappingContextTypeInformationMapper.java:63)
at org.springframework.data.convert.DefaultTypeMapper.writeType(DefaultTypeMapper.java:177)
at org.springframework.data.convert.DefaultTypeMapper.writeType(DefaultTypeMapper.java:165)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.addCustomTypeKeyIfNecessary(MappingMongoConverter.java:613)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.writePropertyInternal(MappingMongoConverter.java:440)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter$3.doWithPersistentProperty(MappingMongoConverter.java:379)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter$3.doWithPersistentProperty(MappingMongoConverter.java:366)

そのため、特定の永続エンティティの MongoTemplate から取得した後、直接 DBCollection を使用しようとしています。この API が続行する唯一の方法である場合、いくつかのガイダンスが必要ですか?/GORM での一括挿入 API はいつサポートされますか、または他の回避策はありますか?

ありがとう。

4

0 に答える 0