当前位置: 首页 > 知识库问答 >
问题:

在HQL查询上使用限制

云丰
2023-03-14

我在JpaRepository中有一个HQL查询:

public interface LineRepository extends JpaRepository<LineEntity , Integer>{
    @Query(
            value = "SELECT l from LineEntity l" +
                    "WHERE l.lineCode = :lineCode "
    )
    List<LineEntity> findAllByLineCode(
            @Param("lineCode")int lineCode
    );

}

我想更改此方法以返回LineEntity。Limit只适用于nativeQuery,我想将其放入注释中


共有3个答案

姬弘文
2023-03-14

如果你想在没有查询的情况下做到这一点,那么我们可以使用分页界面。只需做两步。

1) 在控制器中

@RequestMapping("/getLineByLineCode/{code}")    
public @ResponseBody Page<LineEntity> getFirstUserByName(@PathVariable String code,Pageable pageable)
{
  // this pageable for single result.(first result will return)
    Page<LineCode> line = repository.findByCode(code,new PageRequest(0,1));
                                                        //(start index,upto index)
   return line;
} 

2) 在存储库中

public interface LineRepository extends JpaRepository<LineEntity , Integer>{
       Page<LineCode> findByCode(String code,Pageable pageable);
}
佟和平
2023-03-14

在hibernate中的查询对象上,您有一个setMax结果(int max结果)方法。

我没有使用如何将其放入注释中,而是使用经典的方式,它是这样工作的:

Query q = session.createQuery("XXX").setMaxResults(1000);
q.list();
哈翔
2023-03-14

如果有许多LineEntity具有相同的LineCode,那么您需要一个额外的属性,该属性可以是id,例如:

public interface LineRepository extends JpaRepository<LineEntity , Integer>{
    @Query(
            value = "FROM LineEntity li WHERE li.id = " +
                    "(SELECT max(l.id) FROM LineEntity l " +
                    "WHERE l.lineCode = :lineCode)"
    )
    LineEntity findFirstByLineCode(
            @Param("lineCode") int lineCode
    );
}
 类似资料:
  • 问题内容: 在Hibernate 3中,有没有办法等效于HQL中的以下MySQL限制? 如果可能的话,我不想使用setMaxResults。这肯定在较旧的Hibernate / HQL版本中是可行的,但似乎已经消失了。 问题答案: 几年前,当有人问到为什么它在Hibernate 2中有效但在Hibernate 3中无效时,此消息发布在Hibernate论坛上: 在HQL中,从不支持Limit 子句

  • 我希望通过登录搜索员工列表,并使用扩展的DAO接口: 在我的服务层中,我用

  • 问题内容: 在Hibernate 3中,有没有办法等效于以下HQL中的MySQL限制? 如果可能,我不想使用setMaxResults。这肯定在较旧的Hibernate / HQL版本中是可行的,但似乎已经消失了。 问题答案: 几年前,当有人问到为什么它在Hibernate 2中有效但在Hibernate 3中无效时,此消息发布在Hibernate论坛上: 在HQL中, 从不 支持Limit 子句

  • 问题内容: 有没有办法使用HQL在Grails中使用hibernate命名查询? 我已经在《利用hibernate》一书中阅读了有关它们的内容,想知道是否有办法在Grails中使用它们。 像这样的映射文件中包含命名查询以及类映射: 现在,我确定可以包含一个 hibernate映射文件, 并将其集成到Grails GORM配置中,因为在此声明,包含 hibernate映射文件的 可以在Grails中

  • 问题内容: 我有以下hibernate映射: 而表如下所示: 我的hibernate查询看起来像: 但是我总是 有人可以帮我如何使它正常工作吗? 问题答案: 您必须使用子查询而不是联接。大致如下: 另外,根据类型的不同,应该以其他格式显示它。

  • 和异常: 实体:GirMotiuRebuig 这个标准起作用了: