首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongoTemplate无法找到集合并引发异常

mongoTemplate无法找到集合并引发异常
EN

Stack Overflow用户
提问于 2016-01-02 17:09:45
回答 1查看 1.9K关注 0票数 0

root-context.xml:

代码语言:javascript
复制
<mongo:mongo id="mongo" host="localhost" port="27017" />
<mongo:db-factory dbname="meraComputer" mongo-ref="mongo" />

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
</bean>

<bean id="userDaoImpl" class="net.meraComputer.spring.daoImpl.UserDaoImpl">
    <property name="mongoTemplate" ref="mongoTemplate"/>
</bean>

UserDaoImpl:

代码语言:javascript
复制
private MongoTemplate mongoTemplate;

@Required
public void setMongoTemplate(MongoTemplate mongoTemplate) {
    this.mongoTemplate = mongoTemplate;
}

@Override
public void saveUser(UserAccount user) {
    if(mongoTemplate.collectionExists("userAccount")) {
        mongoTemplate.save(user);
    }else {
        mongoTemplate.createCollection("userAccount");
        mongoTemplate.save(user);
    }
}

在保存第一个UserAccount时,我已经创建了userAccount集合。

代码语言:javascript
复制
db.userAccount.find().pretty()
{
"_id" : ObjectId("568781929a0085d703e45e0e"),
"_class" : "net.meraComputer.spring.model.UserAccount",
"username" : "Test",
"password" : "$2a$10$XrDNeBw0vKTr0zEXVVLMy.N2L4wEzJ/C1lBAuvRQB6YC6EMFr3ws6",
"firstname" : "Test",
"lastname" : "Test",
"userRole" : [ ],
"roles" : [
    DBRef("role", "ADMIN")
]

但是,当我试图阻止另一个用户时,它只是在这里返回false mongoTemplate.collectionExists("userAccount"),当它转到保存部分时,它抛出一个异常:

代码语言:javascript
复制
org.springframework.data.mongodb.UncategorizedMongoDbException: command failed [create]: { "serverUsed" : "localhost/127.0.0.1:27017" , "ok" : 0.0 , "errmsg" : "collection already exists" , "code" : 48}; nested exception is com.mongodb.CommandResult$CommandFailure: command failed [create]: { "serverUsed" : "localhost/127.0.0.1:27017" , "ok" : 0.0 , "errmsg" : "collection already exists" , "code" : 48}
org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTranslator.java:78)
org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:1800)
org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:388)
org.springframework.data.mongodb.core.MongoTemplate.doCreateCollection(MongoTemplate.java:1413)

我试过了:

代码语言:javascript
复制
mongoTemplate.getCollectionNames() - no result.
mongoTemplate.collectionExists(UserAccount.class) - false
EN

回答 1

Stack Overflow用户

发布于 2016-01-02 18:23:13

将我的依赖项更改为以下项解决了我的问题:

代码语言:javascript
复制
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb-parent</artifactId>
<version>1.8.2.RELEASE</version>
</dependency>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34564277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档