2013-07-27 64 views
1

我有一個JDOQL/DataNucleus存儲層,它存儲可以在varchar字段中具有多個基本類型的值。其中一些是數字,我需要比較(</>/...)他們與數字常量。如何實現這一目標?我正在嘗試使用例如(java.lang。)在字段或值上的Long.parse(例如java.lang.Long.parseLong(field)> java.lang.Long.parseLong(string_param)),提供一個long類型的參數給字符串字段等但它不起作用。事實上,我很少會遇到任何錯誤,對於各種組合,它會返回所有值或沒有值,因爲沒有明顯的原因。 是否有這方面的文件?如何將字符串轉換爲JDOQL中的數字?

說明:該字段是字符串類型(實際上是我從中獲取的字符串集合)。對於一些值的子集,它們可以存儲整數,例如, 「3」字符串,我需要做值> = 2個過濾器。 我嘗試使用強制轉換,但沒有太多,他們確實產生錯誤,讓我調查一下更多

+1

既然我們在這裏談論JDO,那麼你想在數值上進行比較的字段實際上是'String's?我的意思是你需要進行數字比較的持久化類成員變量是'String'? –

回答

0

JDO有一套完整的方法可用於JDOQL,DataNucleus JDO添加了一些附加的方法並允許用戶添加對其他人的支持 http://www.datanucleus.org/products/accessplatform_3_3/jdo/jdoql.html#methods

然後您也可以使用JDOQL強制轉換(與該鏈接在同一頁上)。

+0

演員表不適用於此場景; (long)values.get(2)> param0「我得到 JDOUserException:無法在org.datanucleus.store上執行操作」cast to [email protected]3「。 [email protected] 看着SQLExpression的源碼,對於我投的並不重要,StringExpression不能轉換爲任何東西。 要實現對SQL92和非SQL存儲的「第一類」支持,需要做什麼,使用toLong之類的方法實現SQL和內存中的插件? DN會在適當的時候使用每一種? – Sergey

+0

僅僅因爲演員沒有被執行並不意味着有人無法提供將某個字符串轉換爲某種東西的能力(讓我們面對它吧,大多數人將'字符串'存儲爲'字符串',所以如果你想要支持你,貢獻它)。要做爲一個方法調用,你要實現你將要使用的任何一個......如果在數據存儲中對它進行評估,請執行sql_method,如果是在內存中,則執行store_query_methods(或者如果您在某個時候需要同時提供這兩者) – DataNucleus

相關問題