Dav*_*ães 13 spring hibernate jpa spring-data spring-data-jpa
我正在尝试使用弹簧数据的新功能,投影来获取部分实体(NetworkSimple)的页面
我已经检查了文档,如果我只是请求:
Collection<NetworkSimple> findAllProjectedBy();
Run Code Online (Sandbox Code Playgroud)
它有效,但如果我使用可分页:
Page<NetworkSimple> findAllProjectedBy(Pageable pageable);
Run Code Online (Sandbox Code Playgroud)
它抛出一个错误:
org.hibernate.jpa.criteria.expression.function.AggregationFunction$COUNT cannot be cast to org.hibernate.jpa.criteria.expression.CompoundSelectionImpl
Run Code Online (Sandbox Code Playgroud)
任何人已经使用过这个吗?
我的NetworkSimple类如下:
public interface NetworkSimple {
Long getId();
String getNetworkName();
Boolean getIsActive();
}
Run Code Online (Sandbox Code Playgroud)
Rob*_*unt 13
注意:此功能应该以原始海报描述的方式工作,但由于此错误,它没有.该漏洞已针对Hopper SR2版本修复,如果您遇到早期版本,则下面的解决方法将起作用.
可以使用PageableSpring Data JPA 1.10(Hopper)中引入的新查询投影功能.您将需要使用@Query注释和手动写你需要,他们也必须使用的别名的字段的查询AS,让春天的数据弄清楚如何对项目的结果.spring-boot-samples部分的spring boot存储库中有一个很好的例子.
在您的示例中,它将非常简单:
@Query("SELECT n.id AS id, n.name AS networkName, n.active AS isActive FROM Network n")
Page<NetworkSimple> findAllProjectedBy(Pageable pageable);
Run Code Online (Sandbox Code Playgroud)
我假设您的实体看起来像这样:
@Entity
public class Network
{
@Id
@GeneratedValue
private Long id;
@Column
private String name;
@Column
private boolean active;
...
}
Run Code Online (Sandbox Code Playgroud)
Spring Data将自动为寻呼信息导出计数查询.也可以在查询中使用连接来获取关联,然后在投影中对它们进行汇总.
| 归档时间: |
|
| 查看次数: |
11486 次 |
| 最近记录: |