मैं विकास में एच 2 डेटाबेस का उपयोग कर रहा हूं, मैंने मूल प्रश्न लिखा है, जो केवल एच 2 का समर्थन करता है। मैं अब इसे जेपीक्यूएल में बदलना चाहता हूं, इसलिए मैं इसे उत्पादन मोड में उपयोग कर सकता हूं।

क्वेरी के अंदर मैं DATE_ADD फ़ंक्शन का उपयोग कर रहा हूं, जो डेटाबेस से वर्तमान तिथि में एक मान जोड़ता है, मैंने जेपीक्यूएल के बराबर खोजने की कोशिश की है, लेकिन मैं सफल नहीं हुआ।

@Modifying
@Transactional
@Query(
        value = "UPDATE ORDER_TABLE O SET O.STATE='CANCELED' WHERE O.STATE='PENDING' AND DATEADD('HOUR',SELECT P.VALUE FROM PARAMETER P WHERE P.NAME ='PENDING_ORDER_TTL' , O.CREATED_AT) < NOW()",
        nativeQuery = true)
void updatePendingOrder();
0
Mehdi Benmesssaoud 19 फरवरी 2019, 17:04

1 उत्तर

सबसे बढ़िया उत्तर

आपको जावा में दिनांक की गणना करने की आवश्यकता है:

@Query(value = "UPDATE Order o SET o.state='CANCELED'" + 
             " WHERE o.state='PENDING' AND o.createdAt < :cutOff")
@Modifying
//Date/LocalDate/LocalDateTime or whatever
public void updateOrders(@Param("cutOff") Date cutOff) 
1
Alan Hay 19 फरवरी 2019, 16:11