与 相关的所有 CRUD 方法CrudRepository都按预期工作,但是当尝试使用findAllwith 分页或排序时会引发错误。我正在使用Lovelace-SR2发布列车。该类只有一个字段,即@Id. 根据文档,支持分页和排序。https://docs.spring.io/spring-data/jdbc/docs/1.0.2.RELEASE/reference/html/#repositories
// this throws error
Iterable<FirstAggregate> aggregates = repo.findAll(Sort.unsorted());
public class FirstAggregate {
@Id
private UUID id;
public FirstAggregate(UUID id) {
this.id = id;
}
public FirstAggregate() {
}
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
}
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-releasetrain</artifactId>
<version>Lovelace-SR2</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
Caused by: java.lang.IllegalStateException: No query specified on findAll
at …Run Code Online (Sandbox Code Playgroud) 尝试使用 ngrx 存储为 angular2 材料表制作数据源。https://material.angular.io/components/table/examples在排序示例中,当排序或数据发生变化时,它们直接访问 _exampleDatabase 数据。使用 ngrx 无法直接访问数据,因此我尝试使用 rxjs 运算符对数据进行排序。
export class ExampleDataSource extends DataSource<any> {
constructor(private _sort: MdSort, private _storeData$: Observable<UserData[]>) {}
connect(): Observable<UserData[]> {
return Observable.combineLatest(this._storeData$, this._sort.mdSortChanage,
(data, sort) => {
// sorting logic here
return data;
})
}
Run Code Online (Sandbox Code Playgroud)
一旦我更改排序顺序或调度新事件以更改商店中的用户数据,这就会正常工作。我需要从每个人那里获取初始数据来显示。是否有我缺少的 rxjs 运算符来实现这一点?或者对于这种情况还有另一种更好的方法。
我曾尝试使用 withLatestFrom 和 startWith 但都没有成功。
谢谢!
编辑:在 main.ts 上添加了一个显示问题http://plnkr.co/edit/5HOJSKKmdCuns2kvSirS?p=preview的 plunkr。从 combineLatest 调用中删除 eventEmitter 时,将打印预期的消息。由于 mdSort 在单击之前不会发出事件,因此这可能会导致我的问题。
Edit2:有关解决方案,请参阅下面的谢尔盖评论。工作 plunkr 也在评论中,因为我的声誉不够高,无法发布 2 个链接。由于事件发射器没有输出至少一个值,我需要在事件发射器上添加 startWith 并且它起作用了。