javax.el.PropertyNotFoundException:类“java.lang.String”没有属性“salaryNo”

javax.el.PropertyNotFoundException:类“java.lang.String”没有属性“salaryNo”,java,class,exception,jstl,el,Java,Class,Exception,Jstl,El,请帮我解决领取不同薪水的问题 PayrollController.java PayrollDAO.java 这里的问题是PropertyNotFound异常。它不会在页面中显示任何值 每当我将查询更改为: salary=session.createQuery("from Gensalarystructure " + "where status!='Inactive'").list(); 那么它的工作绝对好。但是我需要将salaryNo转换为排序格式。所以我使用了下面的查询,然后它开始抛出错误

请帮我解决领取不同薪水的问题

PayrollController.java PayrollDAO.java 这里的问题是PropertyNotFound异常。它不会在页面中显示任何值

每当我将查询更改为:

salary=session.createQuery("from Gensalarystructure " + "where status!='Inactive'").list();
那么它的工作绝对好。但是我需要将salaryNo转换为排序格式。所以我使用了下面的查询,然后它开始抛出错误

salary=session.createQuery("select distinct salaryNo from Gensalarystructure " + " where status!='Inactive'").list();
您正在选择DAO中的唯一列表

salary=session.createQuery(" select distinct salaryNo from Gensalarystructure "
+ " where status!='Inactive'").list();  
换成

Criteria criteria = (Criteria) session.
              createCriteria(Gensalarystructure.class).
criteria.setProjection(Projections.distinct(Projections.property("salaryNo")));
salary = criteria.list()
PayrollDAO.java

  public List<Gensalarystructure> GensalarystructureList(){

    System.out.println("SalaryList");
    List<Gensalarystructure[]> salary = null;
    Transaction tx = null;
    Gensalarystructure ob =null;
    Session session = getSessionFactory().openSession();
    Query query = null;
    List<Gensalarystructure> list = new ArrayList<Gensalarystructure>();
    try {
        tx = session.beginTransaction();
            query = session.createQuery("SELECT distinct salaryNo,userId FROM Gensalarystructure");      
            salary = query.list();
            System.out.println("list salary "+salary);                
              for(Object[] objArr: salary){
                        ob=new Gensalarystructure();
                        ob.setStructureNo(((String)(objArr[0])));
                        ob.setStructureCode((String)(objArr[1]));

                        list.add(ob);

                    }   

        tx.commit();
    } catch (HibernateException e) {
        if (tx != null) {
            tx.rollback();
        }
        e.printStackTrace();
    }  finally {
        session.close();
    }

    return list;
}
大家好,salaryno属性值没有标识,所以在将list对象发送到JSTL视图页面之前,我使用setter方法使用迭代器分配属性。 之后,JSTL可以识别特定的属性,并按预期工作

谢谢大家的支持。
希望这个答案有帮助。

我可以知道我现在需要更改什么吗?谢谢你的回答。实际上我需要选择SalaryNo的不同值。这就是我使用该查询的原因。但是最终得到错误我在更改代码后也得到了相同的错误。我无法确定错误的原因。检查返回的列表,看看它有什么类型的对象,等等,围绕它做一些小的调试
salary=session.createQuery("select distinct salaryNo from Gensalarystructure " + " where status!='Inactive'").list();
salary=session.createQuery(" select distinct salaryNo from Gensalarystructure "
+ " where status!='Inactive'").list();  
Criteria criteria = (Criteria) session.
              createCriteria(Gensalarystructure.class).
criteria.setProjection(Projections.distinct(Projections.property("salaryNo")));
salary = criteria.list()
  public List<Gensalarystructure> GensalarystructureList(){

    System.out.println("SalaryList");
    List<Gensalarystructure[]> salary = null;
    Transaction tx = null;
    Gensalarystructure ob =null;
    Session session = getSessionFactory().openSession();
    Query query = null;
    List<Gensalarystructure> list = new ArrayList<Gensalarystructure>();
    try {
        tx = session.beginTransaction();
            query = session.createQuery("SELECT distinct salaryNo,userId FROM Gensalarystructure");      
            salary = query.list();
            System.out.println("list salary "+salary);                
              for(Object[] objArr: salary){
                        ob=new Gensalarystructure();
                        ob.setStructureNo(((String)(objArr[0])));
                        ob.setStructureCode((String)(objArr[1]));

                        list.add(ob);

                    }   

        tx.commit();
    } catch (HibernateException e) {
        if (tx != null) {
            tx.rollback();
        }
        e.printStackTrace();
    }  finally {
        session.close();
    }

    return list;
}