package com.sapolar.document; 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; @Repository public interface DocumentRepository extends JpaRepository { @Query("SELECT d FROM Document d JOIN d.entities e WHERE e.entityType = :entityType AND e.entityId = :entityId") List findByEntityTypeAndEntityId(@Param("entityType") String entityType, @Param("entityId") Long entityId); List findByDocumentTypeId(Integer documentTypeId); @Query("SELECT d FROM Document d WHERE d.documentType.id = :typeId") List findByDocumentType(@Param("typeId") Integer typeId); @Query("SELECT d FROM Document d JOIN d.entities e WHERE " + "(:entityType IS NULL OR e.entityType = :entityType) AND " + "(:entityId IS NULL OR e.entityId = :entityId) AND " + "(:documentTypeId IS NULL OR d.documentType.id = :documentTypeId) AND " + "(:originalName IS NULL OR LOWER(d.originalName) LIKE LOWER(CONCAT('%', :originalName, '%')))") List searchDocuments( @Param("entityType") String entityType, @Param("entityId") Long entityId, @Param("documentTypeId") Integer documentTypeId, @Param("originalName") String originalName); }