package com.paymentlink.repository; import com.paymentlink.model.entity.Order; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import java.util.List; import java.util.Optional; @Repository public interface OrderRepository extends JpaRepository { Optional findByOrderId(String orderId); @Query("SELECT o FROM Order o LEFT JOIN FETCH o.items WHERE o.orderId = :orderId") Optional findByOrderIdWithItems(@Param("orderId") String orderId); @Query("SELECT DISTINCT o FROM Order o LEFT JOIN FETCH o.items ORDER BY o.createdAt DESC") List findAllWithItems(); List findByCustomerEmail(String customerEmail); List findByStatus(String status); }