使用联接HibernateTemplate()进行查询

使用联接HibernateTemplate()进行查询,hibernate,Hibernate,代码T类类型能力的代码 @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "typeCompetence") public Set<Criteres> getCritereses() { return this.critereses; } 类CriteresDAO的代码 public List<Criteres> FindidAspetComp

代码T类类型能力的代码

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "typeCompetence")
    public Set<Criteres> getCritereses() {
        return this.critereses;
    }
类CriteresDAO的代码

public List<Criteres> FindidAspetComp(){

        String queryString = "from Criteres c ,TypeCompetence t where c.id_type_compete = t.id_type_compete AND t.id_type_compete = 4 ";
        return getHibernateTemplate().find(queryString);
    }

HQL从不使用表名和列名。它始终使用实体名称和字段/属性名称。你所需要的只是

select c from Criteres c where c.typeCompetence.id = 4
阅读。请确定你的名字。实体不应具有复数形式,因此应将
Critere
命名为
Critere
getCriteres()
应命名为
getCriteres()
。我甚至不明白
FindidAspetComp()
应该是什么意思。它不遵守Java命名约定:方法以小写字母开头,并且采用驼峰格式

javax.servlet.ServletException: could not resolve property: id_type_compete of: tn.com.ModuleEVL.domaine.Criteres [from tn.com.ModuleEVL.domaine.Criteres c ,tn.com.ModuleEVL.domaine.TypeCompetence t where c.id_type_compete = t.id_type_compete AND t.id_type_compete = 4 ];
select c from Criteres c where c.typeCompetence.id = 4