Java 实体管理器使用排序对象按查询排序

Java 实体管理器使用排序对象按查询排序,java,sql,spring,hibernate,entitymanager,Java,Sql,Spring,Hibernate,Entitymanager,我正在使用实体管理器,希望从Sort(org.springframework.data.domain.Sort)对象中附加“orderby”查询提交 排序对象包含类似“id:DESC”的内容。 我可以将排序对象解析为字符串,删除条件并将其附加到查询中。查询类似于“从项目中选择p…按p.id描述排序” 有没有更好的方法来解决这个问题,有什么建议吗 抱歉,也许我的描述有点误导,但我有一个RESTAPI,我的方法得到排序对象,包括我需要排序的字段和方向。我无法轻松地将其排序为ASC或DESC。这取决

我正在使用实体管理器,希望从Sort(org.springframework.data.domain.Sort)对象中附加“orderby”查询提交

排序对象包含类似“id:DESC”的内容。 我可以将排序对象解析为字符串,删除条件并将其附加到查询中。查询类似于“从项目中选择p…按p.id描述排序”

有没有更好的方法来解决这个问题,有什么建议吗


抱歉,也许我的描述有点误导,但我有一个RESTAPI,我的方法得到排序对象,包括我需要排序的字段和方向。我无法轻松地将其排序为ASC或DESC。这取决于我拥有的排序对象的方法用法。

只需在排序对象上使用该方法即可获得所需内容

query.orderBy(mySort.descending());

上周,我检查了同样的问题,并更改了代码如下:工作正常;和你分享同样的东西

StringBuilder strBuilder = "SELECT p FROM projects";
entityManager.createQuery(strBuilder.toString());  
Iterator<Order> orderIterator = sort.iterator();
Order order = orderIterator.next();
strBuilder.append(" Order By ").append(order.getProperty()).append(" ")
                .append(order.getDirection().name());
StringBuilder strBuilder=“从项目中选择p”;
entityManager.createQuery(strBuilder.toString());
迭代器orderIterator=sort.Iterator();
Order=orderIterator.next();
strBuilder.append(“Order By”).append(Order.getProperty()).append(“”)
.append(order.getDirection().name());

为什么要解析字符串?排序对象是一个对象。使用它的方法。我如何将对象本身附加到查询字符串中,而不使用“:”中间?我看到您正在使用spring。检查Pageable和Sort with spring数据jpa Sort是一个Iterable。每个Sort.Order都有一个属性和一个isDescending标志。使用循环。Sort有一个direction属性,甚至还有一个降序方法来完成您需要的工作