Rumah > Soal Jawab > teks badan
1.mongoTemplate.findById(id, clazz, collectionName) pertanyaan berdasarkan kunci utama _id melaporkan pengecualian bersarang ialah java.lang.NoClassDefFoundError: com/mongodb/MongoException$DuplicateKey
2. Beberapa _id boleh ditemui, tiada masalah. Beberapa semakan _id akan melaporkan ralat di atas.
3. mongodb yang digunakan dalam pangkalan data menggunakan spring untuk menyepadukan mongodb dan menggunakan mongoTemplate untuk membuat pertanyaan.
4 Maklumat konfigurasi yang berkaitan adalah seperti berikut:
<!-- MONGODB bermula -->
<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.<!-- Tetapkan nama pangkalan data untuk digunakan-->
<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. Pengecualian bersarang ralat ini ialah java.lang.NoClassDefFoundError: com/mongodb/MongoException$DuplicateKey Tidak ada jawapan yang pasti di Internet. Alasan saya untuk ini adalah pelik. Beberapa pertanyaan berdasarkan id tiada masalah. Sesetengah ID melaporkan ralat ini sebaik sahaja ia disemak. tertekan. . .
PHP中文网2017-05-24 11:37:45
Saya telah mengujinya dan mendapati terdapat masalah dengan versi mongo. Hanya tukar kepada versi yang lebih rendah. . .