Skip to content

Instantly share code, notes, and snippets.

@mrserverless
Created August 18, 2015 23:11
Show Gist options
  • Save mrserverless/930d4d40a787a1f6a7d1 to your computer and use it in GitHub Desktop.
Save mrserverless/930d4d40a787a1f6a7d1 to your computer and use it in GitHub Desktop.

Revisions

  1. Yun Zhi Lin created this gist Aug 18, 2015.
    23 changes: 23 additions & 0 deletions HibernateGenericDAO
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,23 @@
    class Device {}
    class Router extends Device {}

    class GenericDAO<T, ID extends Serializable> {
    protected Class<T> persistentClass;
    protected Class<ID> idClass;

    private GenericDAO() {
    List <ResolvedType> typeParameters = new TypeResolver().resolve(this.getClass()).typeParametersFor(GenericDAO.class);
    this.persistentClass = (Class<T>) typeParameters.get(0).getErasedType();
    this.idClass = (Class<ID>) typeParameters.get(1).getErasedType();
    }
    }

    class DeviceDAO<T extends Device> extends GenericDAO<T, Long> {}
    class RouterDAO extends DeviceDAO<Router> {}

    @Test
    public void resolvesEntityType () {
    RouterDAO routerDAO = new RouterDAO();
    assert routerDAO.persistentClass == Router.class;
    assert routerDAO.idClass == Long.class;
    }