代码之家  ›  专栏  ›  技术社区  ›  Gopi Lal

如何传递JPA视图实体的动态限制值?

  •  0
  • Gopi Lal  · 技术社区  · 7 年前

    我在MySQL中创建了一个视图,我在JPA中使用该视图作为实体,

    @Entity
    @Immutable
    @Table(name = "my_view")
    

    现在我面临的问题是,我正试图通过在查询对象中设置setMaxResults来进行分页,在后端发生的事情是视图没有限制,因此它试图获取所有记录,然后应用setMaxResults,这会破坏性能我本来可以编写本机查询,但有点混乱。

    select e from myViewEntity where 1=1 and (adding addition constraints as parameter)
    

    我的问题是,是否有任何方法可以将限制作为动态值传递给视图??

    注意:我使用别名将约束传递给视图。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Alien    7 年前

    你可以用 setFirstResult setMaxResults 通过动态传递firstResult和maxResults的值,在查询中使用如下方法。

    List<User> users = entityManager().createQuery("SELECT o FROM User o", User.class).setFirstResult(firstResult).setMaxResults(maxResults).getResultList();