1.这是Hibernate实体类操作异常,出现这个异常,要检查以下几个情况。
2.首先要检查在实体类中是否有构造器,例如:
public class PropertyStock {}
3.如果有上面两个构造器,再检查变量是否匹配,不要写错了
4.然后要注意,变量类型是否匹配,比如,上面的age变量类型为:Integer,写成 int可能会有问题。所以要注意long和Long,boolean和Boolean等等,最好写成long型
5.查询时有几个参数,你的构造器要对应相应的参数public List<PropertyStock> findByCustomerId(java.lang.Long customerid){
String hql="select new com.stock.model.PropertyStock(TS.stockPriceNow,TS.stockName,TP.num,TP.numDunjie,TP.price) from TStock as TS,TProperty as TP where TS.stockCode=TP.stockCode and TP.customerId=?";
List<PropertyStock> list = getHibernateTemplate().find(hql, customerid);
System.out.println("查询的结果长度为:"+list.size());
// Query query = session.createQuery(hql);
// query.setLong(0, customerid);
// List<PropertyStock> list = query.list();
// System.out.println("长度为:"+list.size());
System.out.println(list.get(0).getCustomerId());
System.out.println(list.get(0).getNum());
System.out.println(list.get(0).getNumDunjie());
System.out.println(list.get(0).getPrice());
System.out.println(list.get(0).getStockPriceNow());
return list;
}
上面的hql语句对应的sql语句为:select t_stock.stock_price_now,t_stock.stock_name,t_property.num,t_property.num_dunjie,t_property.price from t_stock,t_property where t_property.customer_id=1 and t_stock.stock_code=t_property.stock_code
查询两种表中的部分属性,其中条件是stockcode相等,且customerid=1;