JSP中的HQL请求
我尝试在JSP中执行HQL请求,该请求引用Projet和Acteur之间的多对多关系。但我得到了这些错误:JSP中的HQL请求,jsp,hql,Jsp,Hql,我尝试在JSP中执行HQL请求,该请求引用Projet和Acteur之间的多对多关系。但我得到了这些错误: GRAVE: Servlet.service() for servlet [jsp] in context with path [/GestionDeProjet] threw exception [org.hibernate.QueryException: could not resolve property: Projet of: bean.Acteur [from bean.Acte
GRAVE: Servlet.service() for servlet [jsp] in context with path [/GestionDeProjet] threw exception [org.hibernate.QueryException: could not resolve property: Projet of: bean.Acteur [from bean.Acteur a join a.Projet p where p.libelle= :libelle]] with root cause
org.hibernate.QueryException: could not resolve property: Projet of: bean.Acteur
at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:83)
at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:77)
at org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:1978)
at org.hibernate.hql.internal.ast.tree.FromElementType.getPropertyType(FromElementType.java:367)
at org.hibernate.hql.internal.ast.tree.FromElement.getPropertyType(FromElement.java:500)
at org.hibernate.hql.internal.ast.tree.DotNode.getDataType(DotNode.java:655)
at org.hibernate.hql.internal.ast.tree.DotNode.prepareLhs(DotNode.java:275)
at org.hibernate.hql.internal.ast.tree.DotNode.resolve(DotNode.java:219)
at org.hibernate.hql.internal.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:126)
at org.hibernate.hql.internal.ast.HqlSqlWalker.createFromJoinElement(HqlSqlWalker.java:387)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.joinElement(HqlSqlBaseWalker.java:3903)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3689)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3567)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:708)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:564)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:301)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:249)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:278)
at
这是我的JSP:
<% String jo=request.getParameter("valeur");
System.out.println(jo);
%>
<% Session session1=HibernateUtil.getSessionFactory().getCurrentSession();
session1.beginTransaction();
Query qry = session1.createQuery("from Acteur a join a.Projet p where p.libelle= :libelle");
qry.setString("libelle",jo);
List list = qry.list();
Iterator <Object[]>iter=list.iterator();
while(iter.hasNext()){
Object[] obj=iter.next();
System.out.println(obj[0]+ " " + obj [1]);
}
%>
Acteur.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 25 avr. 2015 06:50:10 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="bean.Acteur" table="ACTEUR">
<id name="idActeur" type="int">
<column name="IDACTEUR" />
<generator class="identity" />
</id>
<property name="nomActeur" type="java.lang.String">
<column name="NOMACTEUR" />
</property>
<property name="prenomActeur" type="java.lang.String">
<column name="PRENOMACTEUR" />
</property>
<property name="mailActeur" type="java.lang.String">
<column name="MAILACTEUR" />
</property>
<property name="fonctionActeur" type="java.lang.String">
<column name="FONCTIONACTEUR" />
</property>
<property name="roleActeur" type="java.lang.String">
<column name="ROLEACTEUR" />
</property>
<set name="acteurProjets" table="PROJET_ACTEUR" inverse="true"
lazy="true" fetch="select">
<key>
<column name="IDACTEUR" />
</key>
<many-to-many class="bean.Projet">
<column name="ID" not-null="true" />
</many-to-many>
</set>
</class>
</hibernate-mapping>
Projet.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 25 avr. 2015 06:50:10 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="bean.Projet" table="PROJET">
<id name="id" type="int">
<column name="ID" />
<generator class="identity" />
</id>
<property name="libelle" type="java.lang.String">
<column name="LIBELLE" />
</property>
<property name="site" type="java.lang.String">
<column name="SITE" />
</property>
<property name="finalite" type="java.lang.String">
<column name="FINALITE" />
</property>
<property name="date_actuelle" type="java.lang.String">
<column name="DATE_ACTUELLE" />
</property>
<property name="date_debut" type="java.lang.String">
<column name="DATE_DEBUT" />
</property>
<property name="date_previsionnelle" type="java.lang.String">
<column name="DATE_PREVISIONNELLE" />
</property>
<many-to-one name="domaine" class="bean.Domaine" fetch="join">
<column name="IDDOMAINE" />
</many-to-one>
<set name="assignedActeurs" table="PROJET_ACTEUR" inverse="false"
lazy="true" fetch="select" cascade="all">
<key>
<column name="ID" />
</key>
<many-to-many class="bean.Acteur">
<column name="IDACTEUR" not-null="true" />
</many-to-many>
</set>
<set name="assignedBénéficiaires" table="PROJET_BENEFICIAIRE"
inverse="false" lazy="true" fetch="select" cascade="all">
<key>
<column name="ID" />
</key>
<many-to-many class="bean.Bénéficiaire">
<column name="IDBENEFICIAIRE" not-null="true" />
</many-to-many>
</set>
<many-to-one name="chefprojet" class="bean.Chefprojet"
fetch="join">
<column name="ID_CHEF" />
</many-to-one>
</class>
</hibernate-mapping>
我不想将代码Java和请求HQL放在JSP中,但事实上我必须将一个变量传递给这个JSP,而我无法在Servlet中获得它,即“jo”,因此,当我在JSP中获得它时,我将所有代码都放在那里。我们也可以看到您的实体代码吗?显示您的hibernate实体。当然,我会编辑我的帖子。我不太熟悉hibernate中的xml标记,希望看到java实体。我认为你必须使用a.acterProjects而不是a.projectAh好的!我尝试了这个,我没有得到任何错误,但是没有显示结果,而是显示:bean。Acteur@5b96c221豆子。Projet@b48238f