在JSP中显示由SQL请求生成的表

在JSP中显示由SQL请求生成的表,sql,jsp,jakarta-ee,servlets,Sql,Jsp,Jakarta Ee,Servlets,我有一个JSP页面,其中有一个包含不同城市的下拉列表,当我选择城市时,我希望显示SQL请求的结果,这是一个包含多个列的表 下拉列表工作正常,但问题是我无法在JSP中显示该表。我得到了一个错误: java.lang.IllegalStateException:节点没有数据类型:org.hibernate.hql.internal.ast.tree.IdentNode +-[IDENT]IdentNode:'idDomaine'{originalText=idDomaine} Projet类与che

我有一个JSP页面,其中有一个包含不同城市的下拉列表,当我选择城市时,我希望显示SQL请求的结果,这是一个包含多个列的表

下拉列表工作正常,但问题是我无法在JSP中显示该表。我得到了一个错误:

java.lang.IllegalStateException:节点没有数据类型:org.hibernate.hql.internal.ast.tree.IdentNode
+-[IDENT]IdentNode:'idDomaine'{originalText=idDomaine}

Projet类与chefprojet和domaine之间存在多对一关系

Projet.java

包装豆

导入java.util.HashSet; 导入java.util.Set

公共类Projet实现java.io.Serializable{

private static final long serialVersionUID = 1L;
public int id;
private String libelle;
private String site;
private String finalite;
private String date_actuelle;
private String date_debut;
private String date_previsionnelle;
private Domaine domaine;
private Set <Acteur> assignedActeurs = new HashSet<Acteur>(0);
private Set <Bénéficiaire> assignedBénéficiaires = new HashSet<Bénéficiaire>(0);
private Chefprojet chefprojet;
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getLibelle() {
    return libelle;
}
public void setLibelle(String libelle) {
    this.libelle = libelle;
}
public String getSite() {
    return site;
}
public void setSite(String site) {
    this.site = site;
}
public String getFinalite() {
    return finalite;
}
public void setFinalite(String finalite) {
    this.finalite = finalite;
}
public String getDate_actuelle() {
    return date_actuelle;
}
public void setDate_actuelle(String date_actuelle) {
    this.date_actuelle = date_actuelle;
}
public String getDate_debut() {
    return date_debut;
}
public void setDate_debut(String date_debut) {
    this.date_debut = date_debut;
}
public String getDate_previsionnelle() {
    return date_previsionnelle;
}
public void setDate_previsionnelle(String date_previsionnelle) {
    this.date_previsionnelle = date_previsionnelle;
}
public Domaine getDomaine() {
    return domaine;
}
public void setDomaine(Domaine domaine) {
    this.domaine = domaine;
}
public Set<Acteur> getAssignedActeurs() {
    return assignedActeurs;
}
public void setAssignedActeurs(Set<Acteur> assignedActeurs) {
    this.assignedActeurs = assignedActeurs;
}
public Set<Bénéficiaire> getAssignedBénéficiaires() {
    return assignedBénéficiaires;
}
public void setAssignedBénéficiaires(Set<Bénéficiaire> assignedBénéficiaires) {
    this.assignedBénéficiaires = assignedBénéficiaires;
}
public Chefprojet getChefprojet() {
    return chefprojet;
}
public void setChefprojet(Chefprojet chefprojet) {
    this.chefprojet = chefprojet;
}
public Projet() {
    super();
    // TODO Auto-generated constructor stub
}
public Projet(String libelle, String site, String finalite,
        String date_actuelle, String date_debut,
        String date_previsionnelle, Domaine domaine, Chefprojet chefprojet) {
    super();
    this.libelle = libelle;
    this.site = site;
    this.finalite = finalite;
    this.date_actuelle = date_actuelle;
    this.date_debut = date_debut;
    this.date_previsionnelle = date_previsionnelle;
    this.domaine = domaine;
    this.chefprojet = chefprojet;
}

我真的需要你的帮助!!

你正在从实体
Projet
中选择
idDomaine
。但是这个实体没有任何
idDomaine
属性

你真的,真的需要学习HQL如何工作,以及如何使用查询参数。你的代码容易受到HQL注入攻击

查询应该是

List<Projet> list = 
    session1.createQuery("select p from Projet p where p.site = :site")
            .setString("site", selected)
            .list();
列表=
会话1.createQuery(“从Projet p中选择p,其中p.site=:site”)
.setString(“站点”,已选定)
.list();
顺便说一句,您还应该学习使用JSPEL和JSTL,并避免使用Scriptlet。您的JSP可抵御XSS攻击

你应该使用

<c:out value="${projet.site}"/>

而不是

<%=projet.getSite()%>


(当然,对每个属性都要这样做)。

我的问题是如何在jsp中显示idDomaine和idchefprojet的值。代码不起作用,因为我在jsp中调用了Domaine,它是一个对象而不是字符串。我不知道如何面对这个问题。
,它将调用
projet.getDomaine().getId()
。谢谢!它工作正常,没有错误,但仍然有一个小问题,我正在显示的表是空的!这可能意味着所选站点没有Projet。使用调试器,检查站点的值,检查数据库。我检查了我的数据库,那里有Projet。我得到的表是空的,但有行数等于所选站点的Projet数。因此,请求成功,我只是在显示时遇到问题。
List<Projet> list = 
    session1.createQuery("select p from Projet p where p.site = :site")
            .setString("site", selected)
            .list();
<c:out value="${projet.site}"/>
<%=projet.getSite()%>