большинство людей должны быть знакомы с созданием универсального DAO для Spring + hibernate.Отсюда ссылка http://www.ibm.com/developerworks/java/library/j-genericdao/index.html, но есть улучшение по Одиночный DAO и универсальные методы CRUD (JPA / Hibernate + Spring)
Это улучшение заключается в обнаружениитип, являющийся частью суперкласса, вместо использования конструктора, чтобы сказать, к какому классу он относится:
public GenericDaoJpaImpl() {
ParameterizedType genericSuperclass = (ParameterizedType) getClass()
.getGenericSuperclass();
this.entityClass = (Class<T>) genericSuperclass
.getActualTypeArguments()[0];
}
ОДНАКО, приведение завершится неудачно с Guice.Для внедрения интерфейс и класс должны быть связаны в таком модуле, как этот
bind(TestDao.class).to(TestDaoImpl.class);
. Таким образом, трюк конструктора для нашего GenericDAO не будет работать из-за следующего:
getClass().getGenericSuperclass() = java.lang.Class
getClass().getName() = com.gwtplatform.samples.basic.server.dao.TestDaoImpl$$EnhancerByGuice$$5fe0d6fd
вопреки тому, что возвращает Spring + Hibernate
getClass().getGenericSuperclass() = sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl
getClass().getName() = com.gwtplatform.samples.basic.server.dao.TestDaoImpl
Я просто сейчас использую супер-конструктор в своих расширенных DAO, но все же хотел бы получить тип вместо предоставления любого, любогоидеи?