Spring 3.0 добавил множество функций для совместимости с Java 5.Многие методы теперь параметризованы.Например, HibernateTemplate.executeXXX()
, HibernateTemplate.getXXX()
, HibernateTemplate.mergeXXX()
return T, HibernateTemplate.loadAll()
возвращает List<T>
.
Но findXXX()
методы возвращают обычный List
, поэтому я должен привести его к чему-то вродеList<MyEntity>
.
Кто-нибудь знает, в чем причина?Почему методы поиска не параметризованы?Или, может быть, есть другой, параметризованный API?
Вот что я делаю.
Это релевантная часть spring.xml:
<bean id="hibernateInterceptor" class="org.springframework.orm.hibernate3.HibernateInterceptor" autowire="byName" /><!--sessionFactory will get autowired-->
<bean id="deviceDaoTarget" class="com.nso.solution.dao.DeviceDAOHibernateImpl" autowire="byName" /><!--sessionFactory will get autowired-->
<bean id="discoveryDAO" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>com.nso.solution.dao.DeviceDAO</value>
</property>
<property name="interceptorNames">
<list>
<value>hibernateInterceptor</value>
<value>deviceDaoTarget</value>
</list>
</property>
</bean>
DeviceDAO - это интерфейс, который содержит несколько методов, позволяющих извлекать, сохранять и удалять объекты.DeviceDAOHibernateImpl реализует этот интерфейс, например,
public List<Device> getAllDevices() {
return getHibernateTemplate().loadAll(Device.class);
}
Мне пришлось пометить этот метод с помощью аннотации @SuppressWarnings ("unchecked").