mirror of
https://github.com/ebean-orm/ebean.git
synced 2026-10-19 16:16:08 +00:00
Change Delete by Id with @SoftDelete to performs soft delete rather than hard delete
This commit is contained in:
@@ -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();
|
||||
|
||||
+29
@@ -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() {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user