代码之家  ›  专栏  ›  技术社区  ›  Shadowman

动态排序NamedQuery?Seam/Hibernate/JPA

  •  7
  • Shadowman  · 技术社区  · 15 年前

    我有几个 NamedQuery ,我希望能够动态地对实体的字段进行排序,而不必创建唯一的 命名查询 我要排序的每个字段的。例如:

    我有一个名为MyObject的实体,具有字段“a”、“b”和“c”。我的基本查询是“ SELECT DISTINCT o FROM MyObject o “,但我希望能够添加 ORDER BY 我的疑问从句。理想情况下,我可以做一些类似命名参数的事情,其中我的查询看起来像:

    SELECT DISTINCT o FROM MyObject o ORDER BY :order
    

    然后指定要排序的字段(a、b、c)。有没有什么方法可以使用Seam/Hibernate/JPA来实现这一点?有没有更好的策略来解决这个问题?

    2 回复  |  直到 15 年前
        1
  •  5
  •   Salvatorelab    9 年前

    无法在运行时更改命名查询。

    //-----编辑过的零件

    public void getOrders(String orderByElement){
    
        String query = "SELECT DISTINCT o FROM MyObject o ORDER BY " + orderByElement;
    
        entityManager.createQuery(query).getResultList();
    }
    

    它是JPA专用的。

        2
  •  3
  •   Community Mohan Dere    9 年前

    在中查看我的解决方案 hibernate-named-query-order-by-partameter

    基本思想是不使用'order by子句存储查询,并在运行时对其进行编辑。