Compare commits

...
2 changed files with 32 additions and 0 deletions
@@ -1242,6 +1242,9 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
}
private <T> int delete(SpiQuery<T> query, boolean permanent) {
if (query.getId() != null && query.whereExpressions() == null && query.descriptor().isSoftDelete()) {
return executeInTrans((txn) -> persister.delete(query.getBeanType(), query.getId(), txn, permanent), query.transaction());
}
SpiOrmQueryRequest<T> request = createQueryRequest(Type.DELETE, query);
try {
request.initTransIfRequired();
@@ -88,6 +88,35 @@ public class DeleteById_SoftDelete_Tests extends BaseTestCase {
cover.deletePermanent();
}
@Test
public void queryByIdDelete_when_softDelete() {
Cover cover = new Cover("q1");
cover.save();
LoggedSql.start();
DB.find(Cover.class).setId(cover.getId()).delete();
List<String> sql = LoggedSql.stop();
assertThat(sql).hasSize(1);
if (isPlatformBooleanNative()) {
assertSql(sql.get(0)).contains("update cover set deleted=true where id = ?");
} else {
assertSql(sql.get(0)).contains("update cover set deleted=1 where id = ?");
}
assertNull(DB.find(Cover.class, cover.getId()));
Cover softDeleted = DB.find(Cover.class)
.setIncludeSoftDeletes()
.setId(cover.getId())
.findOne();
assertNotNull(softDeleted);
assertThat(softDeleted.isDeleted()).isTrue();
cover.deletePermanent();
}
@Test
public void deletePermanentById_when_softDelete() {