32 lines
1.4 KiB
Java
32 lines
1.4 KiB
Java
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<Document, Long> {
|
|
|
|
@Query("SELECT d FROM Document d JOIN d.entities e WHERE e.entityType = :entityType AND e.entityId = :entityId")
|
|
List<Document> findByEntityTypeAndEntityId(@Param("entityType") String entityType, @Param("entityId") Long entityId);
|
|
|
|
List<Document> findByDocumentTypeId(Integer documentTypeId);
|
|
|
|
@Query("SELECT d FROM Document d WHERE d.documentType.id = :typeId")
|
|
List<Document> 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<Document> searchDocuments(
|
|
@Param("entityType") String entityType,
|
|
@Param("entityId") Long entityId,
|
|
@Param("documentTypeId") Integer documentTypeId,
|
|
@Param("originalName") String originalName);
|
|
}
|