J'utilise Spring avec Hibernate et j'ai initialement créé mon projet with a hibernate xml config, ce qui a entraîné des problèmes de performances et semblait être la mauvaise façon de procéder. J'essaye maintenant d'injecter mon SessionFactory, en commençant par 1 dao, mais obtenez une exception null de pointeur où sessionFactory.getCurrentSession() est appelée. Je pense que mon code ressemble aux exemples que j'ai vus. Je suis perplexe. J'ai également essayé de ne pas utiliser la ressource et d'injecter la sessionFactory dans le dao dans le contexte de l'application à la place. Même résultatSessionFactory is null
applicationContext.xml
<context:component-scan base-package="path.to.base">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mappingDirectoryLocations">
<list>
<value>classpath*:/path/to/mapping/files</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="dialect">org.hibernate.dialect.Oracle10gDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<tx:annotation-driven/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
myDAO
@Repository
public class myDAO {
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory(){
return sessionFactory;
}
@Resource(name="sessionFactory")
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public myDAO() {
}
@SuppressWarnings("unchecked")
@Transactional(readOnly=true)
public List<Things> getAllThings() {
return sessionFactory.getCurrentSession().createCriteria(EvalMasterEvaluationType.class)
.add(Restrictions.eq("active", "Y")).addOrder(Order.desc("createDtTm")).list();
}
}
Spring 3.2.1, Hibernate 3.6.10
source de données ne sont pas correctement réglée –
j'avais rencontré question similaire. c'était parce que la source de données n'était pas réglée correctement –
Je ne pense pas que ce soit ça. Je ne manque aucune propriété dans ma source de données et je sais que le pilote, l'url, le nom d'utilisateur et le mot de passe sont corrects. J'ai essayé différentes classes, mais cela n'a pas aidé. Il se peut que ce soit quelque chose en dehors de ces fichiers. –