SSH 2にJSONを入れる


struts 2の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 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の間違いを調べることができることに気づきました.