日期:2014-05-18  浏览次数:20806 次

getHibernateTemplate.load()方法无法传int型参数???
小弟刚在看尚学堂的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()试一下.