0

我在 spring-jpa 上有一个使用 mongodb 的示例应用程序。我有我的服务类

import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
//import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;


@Component
public class Test  {

    @PersistenceContext
         EntityManager em;
         EntityManagerFactory emf;

         @Transactional(readOnly = false, isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED)
    public String persist(Details details) {
             Query query = em.createNativeQuery("db.Details.findOne(username= "+details.getUsername()+"& password= "+details.getPassword(), Details.class);
             List<Details> resultList = query.getResultList();
             System.out.println(query.toString());
             Object t = null;
                if (!em.contains(t)) {
                em.persist(details);
                em.flush();
                System.out.println("Persist successful ...");
                }
                em.clear();
                em.close();
            return "persist";
         }
}

控制器类

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
//import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class HelloWorldController {

@Autowired
private Test test;

    @RequestMapping("/")
            public String hello() {
                return "hello";
    }
    @RequestMapping(value = "/hi", method = RequestMethod.GET)
    public String hi(@RequestParam("username") String username, @RequestParam("password") String password, ModelMap model) throws Exception{
        Details details = new Details();
        test.persist(details);
        model.addAttribute("username", details.getUsername());
        model.addAttribute("password", details.getPassword());
        return "hi";
    }

}

我的 pojo 课是

@Entity
@Table(name="Details")
public class Details {
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "details")
    @TableGenerator(name="details")
    @Column
    private int Id;
    @Column
    private String username;
    @Column
    private String password;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }


}

我的应用程序运行良好,但数据没有插入到数据库中,我不确定QUERY。任何人都可以帮助我了解我需要在查询中进行哪些更改,以便我可以检索数据。提前致谢。

4

1 回答 1

1

您不能使用 spring-data-jpa 访问 mongo。您需要使用使用不同模型的 spring-data-mongodb,从其实体注释开始。

访问 mongo 的最简单方法是

  • 将 spring-data-mongodb 依赖项添加到您的 POM
  • 创建Repository接口
  • @Document("aCollectionName")至少使用@Id注释您充当 DAO 的 POJO和您的 id 字段。

让它为您提供最低要求以使其正常工作。具体细节请按照相应的文档教程

于 2014-09-17T10:32:13.723 回答