小弟刚在看尚学堂的OA视频,跟着人家开发
- Java code
public void addOrg( Orgnization org, int parentId ) { if(parentId !=0) { org.setParent ((Orgnization)this.getHibernateTemplate ( ).load (Orgnization.class , parentId)); } this.getHibernateTemplate ( ).save (org); }}
上面的是实现
- Java code
public void addOrg(Orgnization org,int parentId);
这个是接口
上面的实现有什么错误吗?
貌似它说LOAD的参数不匹配
在网上找了一下,说是要将int封装成Integer型 ,改后真的是可以了,但我搞不懂的是,这个不应该是会自动转换的吗?何况人家在视频里也是直接传一个int型的也没有错,为什么我的就成这样了呢??
那位前辈懂的麻烦说一下,小弟刚学,不太懂,先拜谢了
------解决方案--------------------
jdk5.0以上才有的自动拆装箱
------解决方案--------------------
sunyujia 正确。
jdk5增加了一个特性AutoBoxing
LZ用的肯定是低于JDK5的版本, 要么换JDK,要么就用new Integer(id)....
------解决方案--------------------
save方法的参数是临时对象,它将临时对象持久化为持久化对象;
update方法的参数是游离对象,它将游离对象持久化为持久化对象;
saveOrUpdate方法的参数即可以是临时对象也可以是游离对象,它可以自动判别是游离还是临时对象,再将参数持久化为持久化对象;
可能是你那对象的状态不是临时对象吧,你试用saveOrUpdate()试一下.