Skip to content

Commit 348d588

Browse files
committed
FIX: Example page findAll bug.
1 parent 3928d1b commit 348d588

4 files changed

Lines changed: 240 additions & 94 deletions

File tree

pom.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,13 @@
193193
<scope>test</scope>
194194
</dependency>
195195

196+
<dependency>
197+
<groupId>ch.qos.logback</groupId>
198+
<artifactId>logback-classic</artifactId>
199+
<version>1.2.3</version>
200+
<scope>test</scope>
201+
</dependency>
202+
196203

197204
</dependencies>
198205

src/main/java/org/springframework/data/ebean/repository/support/SimpleEbeanRepository.java

Lines changed: 124 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.springframework.data.ebean.repository.support;
1818

1919
import io.ebean.EbeanServer;
20+
import io.ebean.PagedList;
2021
import io.ebean.SqlUpdate;
2122
import io.ebean.UpdateQuery;
2223
import io.ebean.text.PathProperties;
@@ -70,32 +71,21 @@ public SimpleEbeanRepository(Class<T> entityType, EbeanServer ebeanServer) {
7071

7172
@Override
7273
public Page<T> findAll(Pageable pageable) {
73-
return Converters.convertToSpringDataPage(db().find(getEntityType())
74-
.setMaxRows(pageable.getPageSize()).setFirstRow((int) pageable.getOffset())
74+
PagedList<T> pagedList = db().find(getEntityType())
75+
.setMaxRows(pageable.getPageSize())
76+
.setFirstRow((int) pageable.getOffset())
7577
.setOrder(Converters.convertToEbeanOrderBy(pageable.getSort()))
76-
.findPagedList(), pageable.getSort());
77-
}
78-
79-
private Class<T> getEntityType() {
80-
return entityType;
81-
}
82-
83-
@Override
84-
public <S extends T> Optional<S> findOne(Example<S> example) {
85-
return db().find(example.getProbeType())
86-
.where(ExampleExpressionBuilder.exampleExpression(db(), example)).findOneOrEmpty();
78+
.findPagedList();
79+
return Converters.convertToSpringDataPage(pagedList, pageable.getSort());
8780
}
8881

8982
@Override
9083
public EbeanServer db() {
9184
return ebeanServer;
9285
}
9386

94-
@Override
95-
public <S extends T> Page<S> findAll(Example<S> example, Pageable pageable) {
96-
return Converters.convertToSpringDataPage(db().find(example.getProbeType())
97-
.where(ExampleExpressionBuilder.exampleExpression(db(), example))
98-
.findPagedList(), pageable.getSort());
87+
private Class<T> getEntityType() {
88+
return entityType;
9989
}
10090

10191
@Override
@@ -104,155 +94,115 @@ public EbeanServer db(EbeanServer db) {
10494
return this.ebeanServer;
10595
}
10696

107-
@Override
108-
public <S extends T> long count(Example<S> example) {
109-
return db().find(example.getProbeType())
110-
.where(ExampleExpressionBuilder.exampleExpression(db(), example)).findCount();
111-
}
112-
11397
@Override
11498
public UpdateQuery<T> updateQuery() {
11599
return db().update(getEntityType());
116100
}
117101

118-
@Override
119-
public <S extends T> boolean exists(Example<S> example) {
120-
return db().find(example.getProbeType())
121-
.where(ExampleExpressionBuilder.exampleExpression(db(), example)).findCount() > 0;
122-
}
123-
124102
@Override
125103
public SqlUpdate sqlUpdateOf(String sql) {
126104
return db().createSqlUpdate(sql);
127105
}
128106

129-
@Override
130-
public <S extends T> S save(S s) {
131-
db().save(s);
132-
return s;
133-
}
134-
135107
@Override
136108
public <S extends T> S update(S s) {
137109
db().update(s);
138110
return s;
139111
}
140112

141-
@Override
142-
public <S extends T> Iterable<S> saveAll(Iterable<S> entities) {
143-
Assert.notNull(entities, "The given Iterable of entities not be null!");
144-
db().saveAll((Collection<?>) entities);
145-
return entities;
146-
}
147-
148113
@Override
149114
public Iterable<T> updateAll(Iterable<T> entities) {
150115
Assert.notNull(entities, "The given Iterable of entities not be null!");
151116
db().updateAll((Collection<?>) entities);
152117
return entities;
153118
}
154119

155-
@Override
156-
public Optional<T> findById(ID id) {
157-
Assert.notNull(id, ID_MUST_NOT_BE_NULL);
158-
return db().find(getEntityType()).where().idEq(id).findOneOrEmpty();
159-
}
160-
161-
@Override
162-
public boolean existsById(ID id) {
163-
Assert.notNull(id, ID_MUST_NOT_BE_NULL);
164-
return db().find(getEntityType()).where().idEq(id).findCount() > 0;
165-
}
166-
167120
@Override
168121
public List<T> findAll(Sort sort) {
169122
return db().find(getEntityType()).setOrder(Converters.convertToEbeanOrderBy(sort)).findList();
170123
}
171124

172-
@Override
173-
public long count() {
174-
return db().find(getEntityType()).findCount();
175-
}
176-
177125
@Override
178126
public List<T> findAll() {
179127
return db().find(getEntityType()).where().findList();
180128
}
181129

182-
@Override
183-
public void deleteById(ID id) {
184-
Assert.notNull(id, ID_MUST_NOT_BE_NULL);
185-
db().delete(getEntityType(), id);
186-
}
187-
188130
@Override
189131
public List<T> findAllById(Iterable<ID> ids) {
190132
Assert.notNull(ids, "The given Iterable of Id's must not be null!");
191-
return db().find(getEntityType()).where().idIn(ids).findList();
192-
}
193-
194-
@Override
195-
public void delete(T t) {
196-
db().delete(t);
133+
return db().find(getEntityType())
134+
.where()
135+
.idIn(ids)
136+
.findList();
197137
}
198138

199139
@Override
200140
public T findOne(ID id, String selects) {
201141
Assert.notNull(id, ID_MUST_NOT_BE_NULL);
202-
return db().find(getEntityType()).select(selects).where().idEq(id).findOne();
203-
}
204-
205-
@Override
206-
public void deleteAll(Iterable<? extends T> entities) {
207-
Assert.notNull(entities, "The given Iterable of entities not be null!");
208-
db().deleteAll((Collection<?>) entities);
142+
return db().find(getEntityType())
143+
.select(selects)
144+
.where()
145+
.idEq(id)
146+
.findOne();
209147
}
210148

211149
@Override
212150
public T findOneByProperty(String propertyName, Object propertyValue) {
213151
Assert.notNull(propertyName, PROP_MUST_NOT_BE_NULL);
214-
return db().find(getEntityType()).where().eq(propertyName, propertyValue).findOne();
215-
}
216-
217-
@Override
218-
public void deleteAll() {
219-
db().find(getEntityType()).delete();
152+
return db().find(getEntityType())
153+
.where()
154+
.eq(propertyName, propertyValue)
155+
.findOne();
220156
}
221157

222158
@Override
223159
public T findOneByProperty(String propertyName, Object propertyValue, String selects) {
224160
Assert.notNull(propertyName, PROP_MUST_NOT_BE_NULL);
225-
return db().find(getEntityType()).apply(PathProperties.parse(selects)).where()
226-
.eq(propertyName, propertyValue).findOne();
161+
return db().find(getEntityType())
162+
.apply(PathProperties.parse(selects))
163+
.where()
164+
.eq(propertyName, propertyValue)
165+
.findOne();
227166
}
228167

229168
@Override
230169
public List<T> findAll(String selects) {
231170
Assert.notNull(selects, SELECT_FIELDS_MUST_NOT_BE_NULL);
232-
return db().find(getEntityType()).select(selects).findList();
171+
return db().find(getEntityType())
172+
.select(selects)
173+
.findList();
233174
}
234175

235176
@Override
236177
public List<T> findAll(Iterable<ID> ids, String selects) {
237178
Assert.notNull(ids, "The given Iterable of Id's must not be null!");
238179
Assert.notNull(selects, SELECT_FIELDS_MUST_NOT_BE_NULL);
239-
return db().find(getEntityType()).select(selects).where().idIn(ids).findList();
180+
return db().find(getEntityType())
181+
.select(selects)
182+
.where()
183+
.idIn(ids)
184+
.findList();
240185
}
241186

242187
@Override
243188
public List<T> findAll(Sort sort, String selects) {
244189
Assert.notNull(selects, SELECT_FIELDS_MUST_NOT_BE_NULL);
245-
return db().find(getEntityType()).select(selects).setOrder(Converters.convertToEbeanOrderBy(sort)).findList();
190+
return db().find(getEntityType())
191+
.select(selects)
192+
.setOrder(Converters.convertToEbeanOrderBy(sort))
193+
.findList();
246194
}
247195

248196
@Override
249197
public Page<T> findAll(Pageable pageable, String selects) {
250198
Assert.notNull(selects, SELECT_FIELDS_MUST_NOT_BE_NULL);
251-
return Converters.convertToSpringDataPage(db().find(getEntityType())
252-
.select(selects).setMaxRows(pageable.getPageSize())
199+
PagedList<T> pagedList = db().find(getEntityType())
200+
.select(selects)
201+
.setMaxRows(pageable.getPageSize())
253202
.setFirstRow((int) pageable.getOffset())
254203
.setOrder(Converters.convertToEbeanOrderBy(pageable.getSort()))
255-
.findPagedList(), pageable.getSort());
204+
.findPagedList();
205+
return Converters.convertToSpringDataPage(pagedList, pageable.getSort());
256206
}
257207

258208
@Override
@@ -269,5 +219,86 @@ public <S extends T> List<S> findAll(Example<S> example, Sort sort) {
269219
.findList();
270220
}
271221

222+
@Override
223+
public <S extends T> Optional<S> findOne(Example<S> example) {
224+
return db().find(example.getProbeType())
225+
.where(ExampleExpressionBuilder.exampleExpression(db(), example)).findOneOrEmpty();
226+
}
227+
228+
@Override
229+
public <S extends T> Page<S> findAll(Example<S> example, Pageable pageable) {
230+
PagedList<S> pagedList = db().find(example.getProbeType())
231+
.where(ExampleExpressionBuilder.exampleExpression(db(), example))
232+
.setMaxRows(pageable.getPageSize())
233+
.setFirstRow((int) pageable.getOffset())
234+
.setOrder(Converters.convertToEbeanOrderBy(pageable.getSort()))
235+
.findPagedList();
236+
return Converters.convertToSpringDataPage(pagedList, pageable.getSort());
237+
}
238+
239+
@Override
240+
public <S extends T> long count(Example<S> example) {
241+
return db().find(example.getProbeType())
242+
.where(ExampleExpressionBuilder.exampleExpression(db(), example)).findCount();
243+
}
244+
245+
@Override
246+
public <S extends T> boolean exists(Example<S> example) {
247+
return db().find(example.getProbeType())
248+
.where(ExampleExpressionBuilder.exampleExpression(db(), example)).findCount() > 0;
249+
}
250+
251+
@Override
252+
public <S extends T> S save(S s) {
253+
db().save(s);
254+
return s;
255+
}
256+
257+
@Override
258+
public <S extends T> Iterable<S> saveAll(Iterable<S> entities) {
259+
Assert.notNull(entities, "The given Iterable of entities not be null!");
260+
db().saveAll((Collection<?>) entities);
261+
return entities;
262+
}
263+
264+
@Override
265+
public Optional<T> findById(ID id) {
266+
Assert.notNull(id, ID_MUST_NOT_BE_NULL);
267+
return db().find(getEntityType()).where().idEq(id).findOneOrEmpty();
268+
}
269+
270+
@Override
271+
public boolean existsById(ID id) {
272+
Assert.notNull(id, ID_MUST_NOT_BE_NULL);
273+
return db().find(getEntityType()).where().idEq(id).findCount() > 0;
274+
}
275+
276+
@Override
277+
public long count() {
278+
return db().find(getEntityType()).findCount();
279+
}
280+
281+
@Override
282+
public void deleteById(ID id) {
283+
Assert.notNull(id, ID_MUST_NOT_BE_NULL);
284+
db().delete(getEntityType(), id);
285+
}
286+
287+
@Override
288+
public void delete(T t) {
289+
db().delete(t);
290+
}
291+
292+
@Override
293+
public void deleteAll(Iterable<? extends T> entities) {
294+
Assert.notNull(entities, "The given Iterable of entities not be null!");
295+
db().deleteAll((Collection<?>) entities);
296+
}
297+
298+
@Override
299+
public void deleteAll() {
300+
db().find(getEntityType()).delete();
301+
}
302+
272303

273304
}

src/test/java/org/springframework/data/ebean/repository/UserRepositoryIntegrationTest.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,19 @@ public void setUp() throws Exception {
4444
}
4545

4646
@Test
47-
public void testFindAll_Page() {
47+
public void findAll_Page() {
4848
Page<User> page = userRepository.findAll(PageRequest.of(0, 20, Sort.Direction.DESC, "id"));
4949
assertNotNull(page);
5050
}
5151

52+
@Test
53+
public void findAll_Example_Page() {
54+
User userExample = new User("X", "Y", "y");
55+
Page<User> page = userRepository.findAll(Example.of(userExample),
56+
PageRequest.of(0, 20, Sort.Direction.DESC, "id"));
57+
assertNotNull(page);
58+
}
59+
5260
@Test
5361
public void sampleTestCase() {
5462
// test find all orm query

0 commit comments

Comments
 (0)