Google App Engine平台下JDOQL查询报异常的问题解决方案

简介:

 java应用程序开发中使用JDO数据存储的方式,里面涉及到以对象为基础建立永久性数据。看不到数据库文件也看不到表,只有自定义的实体类,存储的方式也很简单,定义一个实体类,然后将其属性赋值,然后调用PersistenceManager 提供的方法存储这个对象即可。但是在数据的查询过程中却是伤透脑筋。以下是我近几天遇到的问题和自己琢磨的解决方案,其中Baby是我定义的实体类。

1.执行GetObjectById()抛出异常 Could not retrieve entity of kind Baby with key Baby("31~60")”其中Baby是我定义的实体类,30~61是我传递的一个作为Id的参数。一直以为哪里的代码出现问题了或者参数的格式不对等问题,经反复试验才知道。这就是GetObjectById()这个方法本身的问题。不像SQL中传入个Id查询有则返回这个对象,没有则返回空,JDO中的数据查询是传入的Id必须能查到数据,若没有就抛出上述异常。

 

解决方案:GetObjectById()方法用try/catch括起来,形如:

 
  1. try 
  2.    Baby baby=PM.GetObjectById(“30~61”); 
  3.    return baby; 
  4. Catch(Exception e) 
  5.    return null

这样,有这个数据返回该记录没有则返回null

2.执行newQuery()抛出类型转换错误

具体英文我忘了,意思就是说意思就是说无法将Baby集合转换成Baby类型,也就是List<Baby>无法转换成Baby类型。SQL中可能根据一条查询语句”select * from Baby where Id=’31~60’”调用方法返回的可以转换成Baby对象,可是JDO中调用newQuery()不管传入的查询语句参数是什么,都会返回一个List<Object>类型。

解决方案 : 调用 newQuery() 就将其结果赋值一个 List<Object> 的变量吧。

3. 执行newQuery()方法抛出” Object Manager has been closed”的异常

这是位于DataServer类中的查询方法代码:

 
  1. public static List<Baby> GetBabyInfoList(String queryString)  
  2.    PersistenceManager pm = PMF.get().getPersistenceManager(); 
  3.    Query query = pm.newQuery(queryString); 
  4.    @SuppressWarnings("unchecked"
  5.    List<Baby> babys = (List<Baby>) query.execute(); 
  6.    pm.close(); 
  7.    return babys; 

我在另一处调用

 
  1. String queryStr=”select from Baby”; 
  2. List<Baby> babies=DataServer.GetBabyInfoList(queryStr); 

结果一运行就抛那个异常了。原因就是GetBabyInfoList方法中的pm.close();,将这句去掉就OK了,了解JDO的人士可能会说将实体类定义成可分离的再在代码中加句pm.setDetachAllOnCommit(true);。事实无情的告诉你,不行!

解决方案:去掉方法中在返回对象前的pm.close();语句。


本文转自HDDevTeam 51CTO博客,原文链接:http://blog.51cto.com/hddev/651975,如需转载请自行联系原作者

相关文章
|
9月前
|
编解码 iOS开发 开发者
App上架Apple App Store和Google Play流程
App上架Apple App Store和Google Play流程
250 2
|
7月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
1186 1
|
5月前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
444 4
|
6月前
|
人工智能 小程序 搜索推荐
uni app下开发AI运动小程序解决方案
本文介绍了在小程序中实现AI运动识别的解决方案。该方案依托于UNI平台,通过高效便捷的插件形式,实现包括相机抽帧控制、人体识别、姿态识别等在内的多项功能,无需依赖后台服务器,大幅提高识别效率和用户体验。方案内置多种运动模式,支持自定义扩展,适用于AI健身、云上赛事、AI体测等多场景,适合新开发和存量改造项目。
|
7月前
|
缓存 小程序 索引
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
479 1
|
9月前
|
开发工具 Android开发
上架Google Play报错:For new apps, Android App Bundles must be signed with an RSA key.
上架Google Play报错:For new apps, Android App Bundles must be signed with an RSA key.
217 1
|
11月前
|
前端开发 小程序
新版校园跑腿外卖独立版+APP+小程序前端外卖配送平台源码
同城校园跑腿外卖配送平台源码,支持自定义diy 你可以设计你的页面,设计你自己的风格,支持多校园,独立版本,多商户,有用户端,骑手端,商家端,强大的功能
348 3
|
12月前
|
移动开发 网络协议 安全
HTML5页面被运营商DNS问题及解决方案,app中h5页面源码的获取
HTML5页面被运营商DNS问题及解决方案,app中h5页面源码的获取
215 4
|
监控 数据库 数据安全/隐私保护
第三方授权的应用苹果审核被驳回解决方案和app版本更新
第三方授权的应用苹果审核被驳回解决方案和app版本更新
172 0
|
iOS开发
app启动时的闪屏页显示不全问题的两种解决方案
app启动时的闪屏页显示不全问题的两种解决方案
198 0

热门文章

最新文章