Problème avec getHibernateTemplate().save
Bonjour tout le monde,
Dans une application web, utilisant Struts 2, Spring et Hibernate, j’essaye d’insérer des enregistrements dans une base MySQL. Pour ce faire, j’utilise getHibernateTemplate().save. Le problème c’est que quand j’enregistre un élément et que je liste le contenu de la table ça apparaît pendant une exécution mais je ne trouve rien au niveau de la base, et il suffit de rafraîchir la liste pour que ça n'apparaisse pas. A votre avis, qu’est ce qui peut en être la cause ?
Voici quelques bouts de code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
CREATE TABLE `compEval`.`Domaine` (
`idDomaine` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`libelleDomaine` VARCHAR(254),
`description` VARCHAR(254),
PRIMARY KEY (`idDomaine`)
)
ENGINE = InnoDB;
Voici le fichier de mapping :
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.toto.compEval.CompEval.Model">
<class name="Domaine" table="Domaine" catalog="compEval">
<id name="idDomaine" type="java.lang.Integer">
<column name="idDomaine" />
<generator class="identity" />
</id>
<property name="libelleDomaine" type="string">
<column name="libelleDomaine" length="254" />
</property>
<property name="description" type="string">
<column name="description" length="254" />
</property>
</class>
</hibernate-mapping>
Voici la méthode du DAO :
public class DomaineDao extends AbstractDAO implements IDomaineDao {
private static final Log log = LogFactory.getLog(DomaineDao.class);
private final SessionFactory sessionFactory = getSessionFactory();
public void persist(Domaine transientInstance) {
log.debug("persisting Domaine instance");
try {
getHibernateTemplate().save(transientInstance);
log.debug("persist successful");
} catch (RuntimeException re) {
log.error("persist failed", re);
throw re;
}
}
Voici la méthode lappelant dans la couche service :
public void saveDomaine(Domaine monDomaine)throws BusinessException{
try{
getDaoFactory().getDomaineDAO().persist(monDomaine);
}
catch (DAOException e) {
throw new BusinessException(e.getMessage());
}
}
Finalement, voici le fichier de la gestion des transactions :
<!-- - - - - - - - - - - Transaction manager - - - - - - - - - -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="get*" read-only="true"/>
<tx:method name="save*" rollback-for="Exception"
propagation="REQUIRED" />
<tx:method name="update*" rollback-for="Exception"
propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<aop:config proxy-target-class="true">
<aop:pointcut id="compEvalServiceMethods"
expression="within(*com.toto.compEval.CompEval.Services.*Service.*)" />
<aop:advisor advice-ref="txAdvice"
pointcut-ref="compEvalServiceMethods" />
</aop:config>
</beans> |
Merci d'avance !
java.lang.NullPointerException
Bonjour,
désolée de s’infiltrer de cette façon, mais c'est tellement urgent !!!!
en fait, je suis débutante avec spring mvc, et j'utilise en parallèle hibernate, maven et mysql. après avoir lu beaucoup de documentation je me suis mise à faire un petit exemple.
j'ai une classe Reglages, interface ReglagesDAO, son implémentation ReglagesDaoImpl, une classe ReglagesService, RegalgesControleur + la configuration du web.xml (DispatcherServlet), reglagesServlet.xml (bean ViewResolver), applicationContext.xml pour les beans (sessionFactory, DataSource, Transaction, ....) et enfin mes pages jsp (index, reglages et result).
j'ai arrivé à afficher la page index qui contient un lien vers une autre page contenant un champs (textArea) où je pouvais écrire et un boutton pour la sauvegarde en base de données. (en utilisant les contrôleurs, @RequestMapping ...).
Mon problème est qu'en cliquant sur bouton envoyer j'obtiens l'exception java.lang.NullPointerException, et j'avais bien compris que ça concernait l'initialisation de la session factory (sachant que j'utilise hibernateTemplate, HibernateDaoSupport). Mais pour la résoudre je sais pas trop quoi faire :(.
Je vous remercie d'avance.