आपने स्प्रिंग को उस क्वेरी को मूल के रूप में मानने के लिए कहा है। अन्यथा यह जेपीए विनिर्देश के अनुसार इसे सत्यापित करने का प्रयास करेगा।
कोशिश करें:
@Query(value = "SELECT ...", nativeQuery = true)
public List<Object[]> transactions();
ध्यान रखें कि इस मामले में नए ऑपरेटर सिंटैक्स का उपयोग नहीं किया जा सकता है और आपको परिणाम के साथ Object
की एक सरणी के रूप में निपटना होगा ।
वैकल्पिक रूप से
यदि आप सीधे पीओजेओ कक्षा में परिणाम मानचित्र का उपयोग करना चाहते हैं तो आपको (यह मानते हुए कि आप जेपीए 2.1+ का उपयोग कर रहे हैं):
1) मैपिंग को परिभाषित करें:
@SqlResultSetMapping(
name="transactionsMapping",
classes={
@ConstructorResult(
targetClass=ConsolidateResDB.class,
columns={
@ColumnResult(name="transdate"),
@ColumnResult(name="orderreqid")
// further mappings ...
}
)
}
)
2) एक मूल क्वेरी परिभाषित करें
@NamedNativeQuery(name="transactions"
, query="SELECT DATE_FORMAT(ts, '%d-%m-%Y') AS transdate, IFNULL(COUNT(orderreqid),0) ... ")
3) इस विधि को CrudRepository
. में परिभाषित करें बिना @Query
. के एनोटेशन:
public List<ConsolidateResDB> transactions();