java - Spring integriert Mongodb und meldet einen Fehler wegen doppeltem Primärschlüssel basierend auf der Primärschlüssel-_id-Abfrage
巴扎黑
巴扎黑 2017-05-24 11:35:45
0
1
1172

1.mongoTemplate.findById(id, clazz, collectionName) Abfrage basierend auf Primärschlüssel _id meldet verschachtelte Ausnahme ist java.lang.NoClassDefFoundError: com/mongodb/MongoException$DuplicateKey
2 Das Problem ist sehr seltsam. Einige _ids können gefunden werden, kein Problem. Einige _id-Prüfungen melden den oben genannten Fehler.
3. Das in der Datenbank verwendete Mongodb verwendet Spring zum Integrieren von Mongodb und verwendet MongoTemplate zum Abfragen.
4. Die relevanten Konfigurationsinformationen lauten wie folgt:
<!-- MONGODB begin -->

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-mongodb</artifactId>
        <!-- <version>1.10.1.RELEASE</version> -->
        <version>1.4.2.RELEASE</version><!-- <version>1.4.2.RELEASE</version><version>1.7.0.RELEASE</version>-->
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-commons</artifactId>
        <!--<version>1.13.1.RELEASE</version>  -->
        <version>1.7.2.RELEASE</version><!--<version>1.7.2.RELEASE</version> <version>1.10.0.RELEASE</version> -->
    </dependency>
    <!-- 是否需要待考察 -->
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-commons-core</artifactId>
        <version>1.4.1.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>3.4.2</version> <!-- <version>3.4.2</version> <version>2.11.3</version>-->
    </dependency>
    <!-- MONGODB end -->

5.<!-- Legen Sie den zu verwendenden Datenbanknamen fest-->

<mongo:db-factory id="mongoDbFactory" 
    host="${mongo.host}"
    port="${mongo.port}"
    dbname="${mongo.dbname}"
    username="${mongo.username}"
    password="${mongo.password}"
     /> 

<!-- mongodb的模板 -->  
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">  
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>  
    <constructor-arg name="mongoConverter" ref="mappingMongoConverter" />
</bean>  

<!-- 映射转换器,扫描back-package目录下的文件,根据注释,把它们作为mongodb的一个collection的映射 -->
<mongo:mapping-converter base-package="com.xxx.entity" />

<bean id="mappingContext" class="org.springframework.data.mongodb.core.mapping.MongoMappingContext" />

<!-- 配置mongodb映射类型 -->
<bean id="mappingMongoConverter" class="org.springframework.data.mongodb.core.convert.MappingMongoConverter">
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
    <constructor-arg name="mappingContext" ref="mappingContext" />
    <property name="typeMapper" ref="defaultMongoTypeMapper" />
</bean>

<!-- 默认Mongodb类型映射 -->
<bean id="defaultMongoTypeMapper" class="org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper">
    <constructor-arg name="typeKey">
        <null/><!-- 设置为空,可以把 spring data mongodb 多余保存的_class字段去掉 -->
    </constructor-arg>
</bean>

6.@Override

public T findById(Serializable id, String collectionName) {
    return mongoTemplate.findById(id, clazz, collectionName);
}

7. Diese verschachtelte Fehlerausnahme ist java.lang.NoClassDefFoundError: com/mongodb/MongoException$DuplicateKey. Ich hoffe, jemand kennt den Grund. Mein Grund dafür ist seltsam. Einige Abfragen basierend auf der ID sind kein Problem. Einige IDs melden diesen Fehler, sobald sie überprüft werden. deprimiert. . .

巴扎黑
巴扎黑

Antworte allen(1)
洪涛

本人中测试出来 mongo版本问题。换个低版本的就可以了。。。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!