हमें यह सुनिश्चित करने की ज़रूरत है कि पिछले 30 दिनों के भीतर केवल जेपीक्यूएल क्वेरी के लिए परिणाम लौटाए जाएं। एक उदाहरण इस प्रकार है:जेपीए क्वेरी के साथ टाइमस्टैम्प तुलना कैसे करें?
Date now = new Date();
Timestamp thirtyDaysAgo = new Timestamp(now.getTime() - 86400000*30);
Query query = em.createQuery(
"SELECT msg FROM Message msg "+
"WHERE msg.targetTime < CURRENT_TIMESTAMP AND msg.targetTime > {ts, '"+thirtyDaysAgo+"'}");
List result = query.getResultList();
यहाँ त्रुटि है हम प्राप्त करते हैं:
<openjpa-1.2.3-SNAPSHOT-r422266:907835 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: An error occurred while parsing the query filter 'SELECT msg FROM BroadcastMessage msg WHERE msg.targetTime < CURRENT_TIMESTAMP AND msg.targetTime > {ts, '2010-04-18 04:15:37.827'}'. Error message: org.apache.openjpa.kernel.jpql.TokenMgrError: Lexical error at line 1, column 217. Encountered: "{" (123), after : ""
मदद!
टीएस क्या है? आपकी क्वेरी में ब्रैकेट क्यों हैं? {...} – Rick
निम्नलिखित लिंक में दस्तावेज़ के रूप में "जेडीबीसी एस्केप सिंटैक्स" टाइमस्टैम्प शाब्दिक का उपयोग करने का प्रयास कर रहा है। ऐसा लगता है जैसे डेटा न्यूक्लियस का सुझाव एक बेहतर समाधान है। http://openjpa.apache.org/builds/latest/docs/manual/jpa_langref.html#jpa_langref_lit http://publib.boulder.ibm.com/infocenter/cscv/v10r1/topic/com.ibm.cloudscape.doc /rrefjdbc41784.html#rrefjdbc41784 – Lightbeard
कोड प्राप्त करने के लिए आपको ओपनजेपीए के खिलाफ एक बग खोलना चाहिए ... या डॉक्टर तय किया गया है। – Rick