javax.el.PropertyNotFoundException:类“java.lang.String”没有属性“salaryNo”
请帮我解决领取不同薪水的问题 PayrollController.java PayrollDAO.java 这里的问题是PropertyNotFound异常。它不会在页面中显示任何值 每当我将查询更改为: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转换为排序格式。所以我使用了下面的查询,然后它开始抛出错误
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;
}