【问题标题】:How to create mongodb query using spring jpa如何使用spring jpa创建mongodb查询
【发布时间】:2014-09-17 09:06:26
【问题描述】:

我在 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。任何人都可以帮助我在查询中进行更改以便我可以检索数据。 提前致谢。

【问题讨论】:

    标签: spring mongodb hibernate spring-data-jpa spring-mongo


    【解决方案1】:

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

    访问 mongo 最简单的方法是

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

    让它为您提供最低要求以使其正常工作。具体详情请关注corresponding doctutorial

    【讨论】:

    • 猜对了,但从未尝试过。我的建议总是受限于我的经验。
    • 我认为我需要进行更多研究,因为我认为这是可能的。但我需要正确的查询。我肯定会听从您的建议。感谢您的回复。
    猜你喜欢
    • 1970-01-01
    • 2019-09-25
    • 2018-07-01
    • 2017-08-15
    • 2016-08-23
    • 1970-01-01
    • 2022-07-15
    • 2019-03-27
    • 2020-02-08
    相关资源
    最近更新 更多