struts2中的action:
public class InvoiceAction extends ActionSupport implements ModelDriven<Sales>{
private List<Sales> salesList=new ArrayList<Sales>();
private SalesIService salesService;
private Sales sales=new Sales();
public String initData(){
HttpServletRequest request =ServletActionContext.getRequest();
HttpSession session = request.getSession();
Short coid=(Short) session.getAttribute("coid");
salesList=salesService.find("from Sales s where s.company.coId="+coid);
System.out.println(salesList);
return "succ";
}
public String findByPK(){
List<Sales> list=salesService.find("from Sales s left join fetch s.company c
where s.salesNo = "+sales.getSalesNo());
if(list.size()>0){
sales=list.get(0);
System.out.println("( ⊙ o ⊙ )");
System.out.println(sales.getSeName()+"╮(╯▽╰)╭");
}
return SUCCESS;
}
//get,set方法
public List<Sales> getSalesList() {
return salesList;
}
public void setSalesList(List<Sales> salesList) {
this.salesList = salesList;
}
public void setSalesService(SalesIService salesService) {
this.salesService = salesService;
}
public Sales getModel() {
return this.sales;
}
}
其中的Sales类:
public class Sales implements Serializable{
private Integer salesNo; //PK
private String sen1; //简码
private Company company; //添加该数据的用户所在的公司(FK)
private String seName; //销货单位名称
private String taxId; //纳税人识别号
private String bank; //开户行
private String account; //账号
private String address; //地址
private String phone; //电话
}
因为
List<Sales> list=salesService.find("from Sales s left join fetch s.company c where s.salesNo = "+sales.getSalesNo());
若在find的时候不把company带出来的话,再使用json格式转化数据时就会出问题为报错hibernate no session。
我猜想,JSON肯定是硬要转换sales中的company,但sales中的company中没有值,所以再去取。
看了JSON还真是难伺候,每次碰到JSON的问题都会找半天,今天终于发现可以用HTTP watch来排查JSON错误了。