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. . .
本人中测试出来 mongo版本问题。换个低版本的就可以了。。。