将Spring的订单从Pageable转换为JPA订单

时间:2019-02-19 13:47:19

标签: jpa spring-data-jpa spring-data jpa-2.0 jpa-2.1

我们的前端被设计为使用Spring的Order发送包含属性名称的Pageable对象。

示例实体:

@Entity
@Table
public class Foo {

   private String userName;

   @Embedded
   private Bar bar;
}

@Embeddable
public class Bar {
   private String value;
}

我们在存储库中收到带有订单的可分页的订单,并从该可分页的对象解析JPA的订单,如下所示:

pageable.getSort().get().forEach(springOrder -> 
        jpaOrders.add(getBuilder().asc(root.get(springOrder .getProperty())))
        );

我们需要这样做,因为我们正在通过条件api建立查询。

当我们在Foo的存储库属性中收到时,一切都很好,例如“用户名”。但是当我们收到可嵌入实体的属性时,例如“ bar.value”出现异常

  

在此ManagedType上找不到具有给定名称[bar.value]的属性

您能告诉我如何从定义可嵌入实体属性的属性创建JPA的Order对象吗?谢谢你的建议

2 个答案:

答案 0 :(得分:0)

对于这些属性路径,您将必须创建连接并使用正确的连接别名和属性路径的最后一部分来应用Order

有关更多详细信息,建议您研究一下Spring Data JPA的代码。 找到对Order类的所有引用,然后开始阅读一些代码。

答案 1 :(得分:-1)

您是否尝试过使用org.springframework.data.jpa.repository.query.QueryUtils#toOrders