Skip to content

Instantly share code, notes, and snippets.

@kool79
Forked from mrserverless/HibernateGenericDAO
Created September 6, 2017 09:14
Show Gist options
  • Save kool79/76eb0ae0eb6c8aa87c3fdc9bd8da79af to your computer and use it in GitHub Desktop.
Save kool79/76eb0ae0eb6c8aa87c3fdc9bd8da79af to your computer and use it in GitHub Desktop.
Hibernate GenericDAO using Class-Mate
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;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment