AbstractDao implements Dao<M,P,K> { @Override public Class<M> getModelClass() { return modelClass; } AbstractDao(Class<M> modelClass, Class<P> partialClass); @Override Class<M> getModelClass(); @Override Class<P> getPartialClass(); FieldData getFieldData(); String getDisplayModelName(); @Override M load(K id); P load(K id, Iterable<String> fields); abstract Optional<P> loadOpt(K id, Iterable<String> fields); M create(P partial); M create(P partial, Instant createAt); M create(P partial, I createBy); abstract M create(P partial, Instant createAt, I createBy); void update(K id, Update<P> update); void update(K id, Update<P> update, Instant updateAt); void update(K id, Update<P> update, I updateBy); abstract void update(K id, Update<P> update, Instant updateAt, I updateBy); @Override M updateAndReturn(K id, Update<P> update); M updateAndReturn(K id, Update<P> update, Instant updateAt); M updateAndReturn(K id, Update<P> update, I updateBy); abstract M updateAndReturn(K id, Update<P> update, Instant updateAt, I updateBy); void dropAndInitTable();  }
@Test public void testGetModelClass() throws Exception { assertEquals(TestModel.class, dao.getModelClass()); }