在做Android和webservice进行对象通信的时候,实现android端登录功能遇到了几个问题:
1.当我的对象类型有外键的情况下,发布服务时,在一个对象表里有另一个对象的引用时(对表来说就是所谓的外键关系),比如两个表 tb_me(用户表),tb_shop(商户表)
tb_shop和tb_me存在多对一的关系。用户hibernate反向生成的时候,在TbMe和TbShop两个对象里都出现了各自的身影,于是问题就来了
a:懒加载问题 ,采用在*.hbm.xml的set里添加了lazy="false"
b.nor any of its super class is know this context. 网上百度了很久也没有解决,最后在一个外国的网站上看到添加@XmlSeeAlso(TbShop.class)可以解决
c.随着@XmlSeeAlso的添加,b 的错误消失了,取而代之的是tbMe->tbShop->tbMe,构成循环了,悲剧啊,后面想一想,的确出现了循环引用,在绕圈了。百度,google一些发现写问题,可是没有找出比较好的解决方案。最后决定把那些关系在 对象类和 *.hbm.xml里全部去掉了,只剩下简单的数据对象。
问题解决,登录成功了!但是感觉很怪啊,希望大牛看到可以给我个解决方案啊
2.今天在调试android端的时候发现,webservice发布的 TbMe login(email,pwd) ;服务,当回传的TbMe对象有某几个参数为空时(NULL)时,SoapObject的property就会没有这个参数了,感觉很怪,可是他就是这样,于是又将数据库的字段都设为不为空,(NULL)用“”代替 ,然后在android 端获取这个""的时候也是采用
if (object2.getPropertyCount()>0) {
this.mePicPath =object2.toString();
}else {
this.mePicPath="";
}
的形式,因为android并不能获取“”串,只是一个anyType{}的空数组而已
以上就是我只几天遇到的问题和解决方案