diff --git a/src/main/java/com/avaje/ebean/Model.java b/src/main/java/com/avaje/ebean/Model.java index 0dfc9d44f..73e291a4f 100644 --- a/src/main/java/com/avaje/ebean/Model.java +++ b/src/main/java/com/avaje/ebean/Model.java @@ -248,10 +248,12 @@ public abstract class Model { return new Finder(server, idType, type); } - // Does not exist yet but I think should - // public void deleteById(I id) { - // return db().deleteById(type, id); - // } + /** + * Delete a bean by Id. + */ + public void deleteById(I id) { + db().delete(type, id); + } /** * Retrieves all entities of the given type. diff --git a/src/main/java/com/avaje/ebeaninternal/server/persist/DefaultPersister.java b/src/main/java/com/avaje/ebeaninternal/server/persist/DefaultPersister.java index c7d3a076c..0248797cf 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/persist/DefaultPersister.java +++ b/src/main/java/com/avaje/ebeaninternal/server/persist/DefaultPersister.java @@ -455,7 +455,11 @@ public final class DefaultPersister implements Persister { // delete the bean(s) SqlUpdate deleteById = descriptor.deleteById(id, idList); if (t.isLogSummary()) { - t.logSummary("-- Deleting " + descriptor.getName() + " Ids" + idList); + if (idList != null) { + t.logSummary("-- Deleting " + descriptor.getName() + " Ids: " + idList); + } else { + t.logSummary("-- Deleting " + descriptor.getName() + " Id: " + id); + } } // use Id's to update L2 cache rather than Bulk table event diff --git a/src/test/java/com/avaje/tests/delete/TestDeleteByIdUsingModel.java b/src/test/java/com/avaje/tests/delete/TestDeleteByIdUsingModel.java new file mode 100644 index 000000000..c71dabaf4 --- /dev/null +++ b/src/test/java/com/avaje/tests/delete/TestDeleteByIdUsingModel.java @@ -0,0 +1,27 @@ +package com.avaje.tests.delete; + +import com.avaje.ebean.BaseTestCase; +import com.avaje.tests.model.onetoone.Account; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +public class TestDeleteByIdUsingModel extends BaseTestCase { + + @Test + public void test() { + + Account account = new Account(); + account.setName("GoingToDeleteThis"); + account.save(); + + Account account1 = Account.find.byId(account.getId()); + assertEquals(account.getName(), account1.getName()); + + Account.find.deleteById(account.getId()); + + Account account2 = Account.find.byId(account.getId()); + assertNull(account2); + } +}