Probleme de methode paramétrable
juliette123
Messages postés
23
Statut
Membre
-
juliette123 Messages postés 23 Statut Membre -
juliette123 Messages postés 23 Statut Membre -
Bonjour,
bonjour,
je travaille avec struts et hibernate,et j'ai un probleme assez bizard
j'ai 2 tables:ObjIndiv et Phase qui ont une association many to one.
dans ma jsp j'ai 2 listes deroulante,l'une pour ObjIndiv et l'autre pour Phase,et lorsque je selectionne un objIndiv,il faut que la liste phase se met à jour,pour cela je recupère l'id(codeObjIndiv) de la valeur selectionnée via ajax et je le retourne comme paramètre dans une methode qui me cherche les phases,mais ça me retourne une liste vide.
voici la table Phase:phase.hbm.xml
la classe phase
la methode qui retourne les phases
le probleme c'est quand je rentre le code manuellement,genre:
ça fonctionne parfaitement,ce probleme me rend vraiment dingue
merci de bien vouloir m'aider
bonjour,
je travaille avec struts et hibernate,et j'ai un probleme assez bizard
j'ai 2 tables:ObjIndiv et Phase qui ont une association many to one.
dans ma jsp j'ai 2 listes deroulante,l'une pour ObjIndiv et l'autre pour Phase,et lorsque je selectionne un objIndiv,il faut que la liste phase se met à jour,pour cela je recupère l'id(codeObjIndiv) de la valeur selectionnée via ajax et je le retourne comme paramètre dans une methode qui me cherche les phases,mais ça me retourne une liste vide.
voici la table Phase:phase.hbm.xml
<hibernate-mapping>
<class name="data.Phase" table="PHASE" schema="BASE">
<id name="idphase" type="java.lang.Long">
<column name="IDPHASE" precision="22" scale="0" />
<generator class="increment"></generator>
</id>
<many-to-one name="objIndiv" class="data.ObjIndiv" fetch="select">
<column name="CODE_OBJ_INDIV" length="20" not-null="true" />
</many-to-one>
.............:
la classe phase
public class Phase extends AbstractPhase implements java.io.Serializable {
// Constructors
/** default constructor */
public Phase() {
}
/** minimal constructor */
public Phase(ObjIndiv objIndiv, Long numphase) {
super(objIndiv, numphase);
}
/** full constructor */
public Phase(ObjIndiv objIndiv, String libellePhase, Date dateDeb, Date dateFin, String duree, Long numphase, Set necessiters) {
super(objIndiv, libellePhase, dateDeb, dateFin, duree, numphase, necessiters);
}
la methode qui retourne les phases
public static List getPhase(String code){
Session session = HibernateSessionFactory.getSession();
List list = null;
try{
Query query=session.createQuery(" from Phase where objIndiv= '"+code+"'");
list =query.list();
}catch(Exception ex){
ex.printStackTrace();
}
return list;
}
le probleme c'est quand je rentre le code manuellement,genre:
Query query=session.createQuery(" from Phase where objIndiv= 'oo'");
ça fonctionne parfaitement,ce probleme me rend vraiment dingue
merci de bien vouloir m'aider
A voir également:
- Probleme de methode paramétrable
- Parametres de mon ordinateur - Guide
- Paramètre de confidentialité - Guide
- Nvidia impossible de récupérer les paramètres ✓ - Forum Jeux PC
- Comment réinitialiser les paramètres de son ordinateur - Guide
- Methode rar - Guide
2 réponses
Salut Juliette.
Deux points :
- est-tu sûre que la string que tu passes à public static List getPhase(String code) n'est pas nulle
- le probleme c'est quand je rentre le code manuellement,genre:
Query query=session.createQuery(" from Phase where objIndiv= 'oo'");
ça fonctionne parfaitement
Moi c'est ça que je trouve étrange. Ta classe Phase a un attribut objIndiv de type ObjIndiv, et non pas de type String si j'ai bien compris, donc je ne vois pas pourquoi ça marche.
D'après moi, avec une requête du genre : from Phase where objIndiv.id= 'oo' ça devrait fonctionner (si on considère que ta classe ObjIndiv a un attribut "id" de type string : le code, avec le getter qui va bien).
Cordialement,
Deux points :
- est-tu sûre que la string que tu passes à public static List getPhase(String code) n'est pas nulle
- le probleme c'est quand je rentre le code manuellement,genre:
Query query=session.createQuery(" from Phase where objIndiv= 'oo'");
ça fonctionne parfaitement
Moi c'est ça que je trouve étrange. Ta classe Phase a un attribut objIndiv de type ObjIndiv, et non pas de type String si j'ai bien compris, donc je ne vois pas pourquoi ça marche.
D'après moi, avec une requête du genre : from Phase where objIndiv.id= 'oo' ça devrait fonctionner (si on considère que ta classe ObjIndiv a un attribut "id" de type string : le code, avec le getter qui va bien).
Cordialement,
Pour le premier point j'ai fait:
et ça me retourne le code,donc le string n'est pas null.
Pour le deuxieme,non seulement cette requette marche
mais aussi lorsque je fais:
et dans la jsp:
j'ai pensé à mettre:
mais le code retourné est un string,et ne peux pas etre paramètre de cette methode
<input type="text" id='phase' value="<%=request.getParameter("codeObjIndiv") %>"/>
et ça me retourne le code,donc le string n'est pas null.
Pour le deuxieme,non seulement cette requette marche
:from Phase where objIndiv= 'oo'");
mais aussi lorsque je fais:
public static List getPhase(String code){
Session session = HibernateSessionFactory.getSession();
List list = null;
try{
Query query=session.createQuery(" from Phase where objIndiv= '"+code+"'");
et dans la jsp:
Iterator it11 = GetList.getPhase("oo").iterator
j'ai pensé à mettre:
getPhase(ObjIndiv code)
mais le code retourné est un string,et ne peux pas etre paramètre de cette methode
Bonjour,
As-tu essayé ceci : D'après moi, avec une requête du genre : from Phase where objIndiv.id= 'oo' ça devrait fonctionner (si on considère que ta classe ObjIndiv a un attribut "id" de type string : le code, avec le getter qui va bien). ?
Peux tu me donner le code de ta classe ObjIndiv stp ?
Merci
As-tu essayé ceci : D'après moi, avec une requête du genre : from Phase where objIndiv.id= 'oo' ça devrait fonctionner (si on considère que ta classe ObjIndiv a un attribut "id" de type string : le code, avec le getter qui va bien). ?
Peux tu me donner le code de ta classe ObjIndiv stp ?
Merci
effectivement une requette du genre
voici la classe ObjIndiv:
public class ObjIndiv extends AbstractObjIndiv implements java.io.Serializable {
et voici la classe AbstractObjIndiv:
from phase where objIndiv.codeObjIndiv='oo'marche ,mais encore une fois la requette:
from phase where objIndiv.codeObjIndiv='"+code+"'"ne marche pas.
voici la classe ObjIndiv:
public class ObjIndiv extends AbstractObjIndiv implements java.io.Serializable {
// Constructors
/** default constructor */
public ObjIndiv() {
}
/** minimal constructor */
public ObjIndiv(String codeObjIndiv, ObjGlob objGlob, Utilisateur utilisateur) {
super(codeObjIndiv, objGlob, utilisateur);
}
/** full constructor */
public ObjIndiv(String codeObjIndiv, ObjGlob objGlob, Utilisateur utilisateur, String libelleObjIndiv, String domaine, String hypothese, Long numobj, Set phases) {
super(codeObjIndiv, objGlob, utilisateur, libelleObjIndiv, domaine, hypothese, numobj, phases);
}
et voici la classe AbstractObjIndiv:
public abstract class AbstractObjIndiv implements java.io.Serializable {
// Fields
private String codeObjIndiv;
private ObjGlob objGlob;
private Utilisateur utilisateur;
private String libelleObjIndiv;
private String domaine;
private String hypothese;
private Long numobj;
private Set phases = new HashSet(0);
// Constructors
/** default constructor */
public AbstractObjIndiv() {
}
/** minimal constructor */
public AbstractObjIndiv(String codeObjIndiv, ObjGlob objGlob, Utilisateur utilisateur) {
this.codeObjIndiv = codeObjIndiv;
this.objGlob = objGlob;
this.utilisateur = utilisateur;
}
/** full constructor */
public AbstractObjIndiv(String codeObjIndiv, ObjGlob objGlob, Utilisateur utilisateur, String libelleObjIndiv, String domaine, String hypothese, Long numobj, Set phases) {
this.codeObjIndiv = codeObjIndiv;
this.objGlob = objGlob;
this.utilisateur = utilisateur;
this.libelleObjIndiv = libelleObjIndiv;
this.domaine = domaine;
this.hypothese = hypothese;
this.numobj = numobj;
this.phases = phases;
}
// Property accessors