NullPointerException sur un bean DAO
Bonjour,
je suis novice dans le développement avec Spring. Pour me faire la main, je travaille sur un projet dont les technologies sont les suivantes: Spring, Hibernate, JPA, Tomcat. Actuellement, j'essaie de le déployer sur un serveur tomcat et à chaque fois, j'obtiens un NullPointerException sur le bean qui me permet d'accéder aux données.
Classe InitializeDAO :
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
|
@Transactional
public class InitializeDAO {
@PersistenceContext
private EntityManager fieldEM;
public InitializeDAO() {
}
public Map<String,String> getRegions() {
final Map<String,String> lRegions = new LinkedHashMap<String, String>();
CcRegion r = new CcRegion();
final Query query = fieldEM.createQuery("select p from Ccion p");
for (Object p : query.getResultList()) {
r =(CcRegion)p;
lRegions.put(r.getId(), r.getLibelle());
}
return lRegions;
}
public Map<String,Map<String,String>> getVillesByRegion(){
final Map<String,String> lRegions = getRegions();
final Map<String,Map<String,String>> lVillesByRegion = new LinkedHashMap<String, Map<String,String>>();
CcVille v = new CcVille ();
if(!lRegions.isEmpty()){
Query query = fieldEM.createQuery("select p from CVle p where p.codeRon =?1");
for (Entry<String, String> entrySet : lRegions.entrySet()){
query.setParameter(1, entrySet.getKey());
final Map <String, String> lVilles = new LinkedHashMap<String, String>();
for (Object p : query.getResultList()) {
v =(CcVille)p;
lVilles.put(v.getId(), v.getLibelle());
}
lVillesByRegion.put(entrySet.getKey(), lVilles);
}
}
return lVillesByRegion;
}
public EntityManager getFieldEM() {
return fieldEM;
}
public void setFieldEM(EntityManager fieldEM) {
this.fieldEM = fieldEM;
}
} |
Pour qu'elle soit instanciée, je l'ai déclarée dans mon fichier applicationContext.xml, voici les déclarations que j'ai rajoutées:
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
| <!-- transaction
<tx:annotation-driven />-->
<tx:annotation-driven transaction-manager="txManager" />
<bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="databasePlatform" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
<!--
<property name="showSql" value="true" />
<property name="generateDdl" value="true" />
-->
</bean>
</property>
</bean>
<bean id="fInitDAO" class="connect.services.InitializeDAO" />
<!-- datasource -->
<bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource"
destroy-method="close"
lazy-init="false"
p:driverClassName="com.mysql.jdbc.Driver"
p:url="jdbc:mysql://xxxxxxxx/yyyyconnectdb"
p:username="aaaaaaa"
p:password="bbbbb"
p:initialSize="1"
p:maxActive="50"
p:maxIdle="10"
p:maxWait="1000"
p:defaultAutoCommit="false"
p:removeAbandoned="true"
p:removeAbandonedTimeout="60">
</bean> |
Puis je l'ai appelé directement dans la classe où j'en avais besoin, ici, il s'agit de la classe FillData:
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
|
@ManagedBean
@SessionScoped
public class FillData implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String fRegion;
private String fVille;
private InitializeDAO fInitDAO;
private Map<String,String> fRegions = new LinkedHashMap<String, String>();
private Map<String,String> fVilles = new LinkedHashMap<String, String>();
private Map<String,Map<String,String>> fVillesParRegion = new HashMap<String, Map<String,String>>();
public FillData() {
super();
fRegions = fInitDAO.getRegions();
fVillesParRegion = fInitDAO.getVillesByRegion();
}
public String getfRegion() {
return fRegion;
}
public void setfRegion(String fRegion) {
this.fRegion = fRegion;
}
public String getfVille() {
return fVille;
}
public void setfVille(String fVille) {
this.fVille = fVille;
}
public Map<String, String> getfRegions() {
return fRegions;
}
public void setfRegions(Map<String, String> fRegions) {
this.fRegions = fRegions;
}
public Map<String, String> getfVilles() {
return fVilles;
}
public void setfVilles(Map<String, String> fVilles) {
this.fVilles = fVilles;
}
public Map<String, Map<String, String>> getfVillesParRegion() {
return fVillesParRegion;
}
public void setfVillesParRegion(
Map<String, Map<String, String>> fVillesParRegion) {
this.fVillesParRegion = fVillesParRegion;
}
/***/
public void getVillesByRegion(){
if(fRegion !=null && !fRegion.equals(""))
fVilles = fVillesParRegion.get(fRegion);
}
public InitializeDAO getfInitDAO() {
return fInitDAO;
}
public void setfInitDAO(InitializeDAO fInitDAO) {
this.fInitDAO = fInitDAO;
} |
Pourrez vous avoir une idée du problème?
Je vous remercie d'avance pour vos réactions