spring - 在 Spring Boot 中使用 HQL 查询

标签 spring postgresql hibernate spring-boot hibernate-mapping

我有一个有多个模型类的 Spring Boot 项目

我想在我的 DAO 实现中使用多个模型类。

谁能解释一下我如何在这里使用 HQL 查询。

我看到的大多数示例都使用 CRUDRepository。但在我的理解中,这将我们限制在一个模型类中(如果我的理解有误,请纠正我)。

其次,使用 CRUDRepository 将我限制为非常具体的方法。但我需要的 HQL 查询可能更复杂,例如:

Query query = session.createQuery(from Employee where name=:name and place=:place and phone=:phone and gender=:gender);

即使对于这样的 HQL 查询,使用 CRUDRepository 也是标准做法吗? 否则我怎么能使用这样的 HQL 查询。 (如果可能的话,还请添加我需要添加的所有依赖项和注释)。我正在使用 Hibernate 和 postgres。

最佳答案

如果您希望在不使用存储库等的情况下执行动态 HQL 查询,这对我来说非常有用:

    @Autowired
    EntityManager entityManager;

    @RequestMapping("/query")
    @ResponseBody
    public String testQuery() {

        Query query = entityManager.createQuery("select u from User u");
        List<User> users = query.getResultList();
        users.forEach(u -> System.out.println(u.getFirstname()));
        return "See Console";
    }

它的好处是,如果您很快想要测试一个查询,并且您正在使用 Spring LiveReload、JRebel、DCEVM 或 HotSwap 和 Hybris,您可以更改查询并保存和刷新。

关于spring - 在 Spring Boot 中使用 HQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47894691/

相关文章:

java - 使用 Jackson 将 java.time.localdate 序列化为 json

java - 在 Chrome 和 Postman 中调试来自 Spring 的服务器发送的事件流

java - @CreatedBy 如何在 Spring Data JPA 中工作?

ruby-on-rails - 查询数组列是否包含一个或多个值

ruby-on-rails - 允许 Rails 中的空值的唯一索引

java - Hibernate异常:could not parse

java - 如何使用 JPA 规范中的另一个公共(public)实体加入两个实体?

java - Spring isUserInRole 不使用 MySQL DB 中的角色

postgresql - 如何使用来自 T2 的随机重复行将较大的表 T1 连接到较小的 T2

java - Hibernate native sql 查询无法正常工作