Reputation: 1
I have to fetch the number of order requests arrived in last 2 hours in a sql server table: ORDER_REQUEST group by order origin id using data_jpa.
I have tried various ways to achieve this using native query in data jpa but getting some exceptions. Can someone help me figure out my mistake?
ORDER REQUEST entity class:
package com.accurate.metric.entity;
import java.sql.Date;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(catalog="ABCNEW_DEV", schema="dbo", name = "orderRequest")
public class OrderRequest {
@Column(name="or_id")
@Id
private int id;
@Column(name="or_oo_id")
private int orderOriginId;
@Column(name="or_orderdate")
private Date orOrderDate;
@Override
public String toString() {
return "OrderRequest [id=" + id + ", orderOriginId=" + orderOriginId + "]";
}
}
OrderCount DTO class
package com.accurate.metric.entity;
public class OrderCount {
private int orderOriginId;
private int count;
public OrderCount(int orderOriginId, int count) {
this.orderOriginId = orderOriginId;
this.count = count;
}
}
Repository class and the native query
package com.accurate.metric.dao;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import com.accurate.metric.entity.OrderCount;
import com.accurate.metric.entity.OrderOrigin;
@Repository
public interface OrderVolumeMetricDao extends JpaRepository<OrderOrigin, Integer>{
@Query("SELECT new com.accurate.metric.entity.OrderCount(o.orderOriginId, COUNT(o)) "
+ "FROM OrderRequest o "
+ "WHERE o.orOrderDate BETWEEN DATEADD('HOUR', -2, CURRENT_TIMESTAMP) AND CURRENT_TIMESTAMP "
+ "GROUP BY o.orderOriginId "
+ "ORDER BY o.orderOriginId")
public List<OrderCount> findCountByOoIdAndDateRange();
}
Upvotes: 0
Views: 15