原因:在保存提交from表单时,先从action中对应的get方法中获取对象,如果对象为null,struts会帮忙创建,在创建的时候如果接口中有复杂对象创建出来的是一个代理对象而不是实现类的对象,代理对象不进行转换直接交由hibernate进行保存时是识别不了的,所以会报Unknown entity;如果接口中没有复杂对象创建出来的是正常的对象。
解决办法:在action中对应的get方法中自己进行判断并创建,不让struts进行创建。如果对象不为null就直接return,如果为null就new一个,这样就可以解决这个问题.
接口图
原始action中get方法实现
修改后