日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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括起來,形如:

  • try
  • {
  • Baby baby=PM.GetObjectById(“30~61”);
  • return baby;
  • }
  • Catch(Exception e)
  • {
  • 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類中的查詢方法代碼:

  • public static List<Baby> GetBabyInfoList(String queryString)
  • {
  • PersistenceManager pm = PMF.get().getPersistenceManager();
  • Query query = pm.newQuery(queryString);
  • @SuppressWarnings("unchecked")
  • List<Baby> babys = (List<Baby>) query.execute();
  • pm.close();
  • return babys;
  • }
  • 我在另一處調用

  • String queryStr=”select from Baby”;
  • List<Baby> babies=DataServer.GetBabyInfoList(queryStr);
  • 結果一運行就拋那個異常了。原因就是GetBabyInfoList方法中的pm.close();,將這句去掉就OK了,了解JDO的人士可能會說將實體類定義成可分離的再在代碼中加句pm.setDetachAllOnCommit(true);。事實無情的告訴你,不行!

    解決方案:去掉方法中在返回對象前的pm.close();語句。

    轉載于:https://www.cnblogs.com/wencansz/archive/2012/11/12/2766802.html

    總結

    以上是生活随笔為你收集整理的Google App Engine平台下JDOQL查询报异常的问题解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。