无法在同一个集合中添加第二个对象 - Spring MVC,MongoDB

时间:2017-08-11 13:35:32

标签: spring mongodb spring-mvc

我可以在test.user集合中添加第一个条目。但是当我尝试将另一个条目添加到同一个集合中时。我得到以下错误:

我尝试删除并重新添加第一个条目,我可以添加它但是form.jsp似乎没有添加第二个条目o.O

错误

HTTP Status 500 - Request processing failed; nested exception is org.springframework.data.mongodb.UncategorizedMongoDbException: { "serverUsed" : "localhost:27017" , "ok" : 0.0 , "errmsg" : "a collection 'test.user' already exists" , "code" : 48 , "codeName" : "NamespaceExists"}; nested exception is com.mongodb.CommandFailureException: { "serverUsed" : "localhost:27017" , "ok" : 0.0 , "errmsg" : "a collection 'test.user' already exists" , "code" : 48 , "codeName" : "NamespaceExists"}

控制器

@RequestMapping(value="/list", method= RequestMethod.GET)
public ModelAndView list(){
    ModelAndView model = new ModelAndView("user/list");
    model.addObject("listUser", userService.listUser());
    return model;
}

@RequestMapping(value="/add", method=RequestMethod.GET)
public ModelAndView add(){
    ModelAndView model = new ModelAndView("user/form");
    model.addObject("userForm", new User());

    return model;
}

@RequestMapping(value="/update/{id}", method=RequestMethod.GET)
public ModelAndView update(@PathVariable("id") String id){
    ModelAndView model = new ModelAndView("user/form");
    model.addObject("userForm", userService.findUserById(id));
    return model;

}

@RequestMapping(value="/save", method=RequestMethod.POST)
public String save(@ModelAttribute("userForm") User user){
    if(user.getId() != null && !user.getId().trim().equals("")){
        userService.update(user);
    }else{
        userService.add(user);
    }

    return "redirect:/user/list";
}

@RequestMapping(value="/delete/{id}", method=RequestMethod.GET)
public String delete(@PathVariable("id") String id){
    User user = userService.findUserById(id);

    userService.delete(user);

    return "redirect:/user/list";
}

form.jsp

<spring:url value="/user/save" var="saveURL" />

<form:form action="${saveURL}" modelAttribute="userForm" methd="POST">
    <label>Name: </label>
    <form:input  path="Firstname" /> <br/>
    <button type="submit">Save</button>

</form:form>

更新

UserService

@Service
public interface UserService {


    public List<User> listUser();

    public void add(User user);

    public void update(User user);

    public void delete(User user);

    public User findUserById(String id);
}

UserServiceImpl

@Service(value = "userService")
public class UserServiceImpl implements UserService{

    @Autowired
    UserDao userDao;

    public List<User> listUser() {
        return userDao.listUser();
    }

    public void add(User user) {
        userDao.add(user);
    }

    public void update(User user) {
        userDao.update(user);
    }

    public void delete(User user) {
        userDao.delete(user);
    }

    public User findUserById(String id) {
        return userDao.findUserById(id);
    }
}

userDAO的

public interface UserDao {

    public List<User> listUser();

    public void add(User user);

    public void update(User user);

    public void delete(User user);

    public User findUserById(String id);


}

在UserDAOImpl

@Service(value = "userDao")
public class UserDaoImpl implements UserDao {

    @Autowired
    MongoTemplate mongoTemplate;
    private static final String COLLECTION_NAME = "user";

    public List<User> listUser() {
        return mongoTemplate.findAll(User.class, COLLECTION_NAME);
    }

    public void add(User user) {
        if(!mongoTemplate.collectionExists(User.class)){
            mongoTemplate.createCollection(User.class);
        }
        user.setId(UUID.randomUUID().toString());
        mongoTemplate.insert(user, COLLECTION_NAME);
    }

    public void update(User user) {
        mongoTemplate.save(user);
    }

    public void delete(User user) {
        mongoTemplate.remove(user, COLLECTION_NAME);
    }

    public User findUserById(String id) {
        return mongoTemplate.findById(id, User.class);
    }
}

的pom.xml

<dependencies>
    <!-- Spring -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>4.3.10.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>4.3.10.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.3.10.RELEASE</version>
    </dependency>


    <!-- jstl -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>

    <!-- MongoDB Java Driver -->


    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-mongodb</artifactId>
        <version>1.10.6.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-mongodb-parent</artifactId>
        <version>1.10.6.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>2.12.3</version>
    </dependency>

</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

0 个答案:

没有答案