SecurityRepository.java

package com.tdmconsult.ete.masterdata;

import com.tdmconsult.ete.exceptions.SecurityNotFound;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface SecurityRepository extends JpaRepository<Security, Long> {

    Optional<Security> findByPublicId(final String publicId);
    Optional<Security> findByIsin(final String isin);

    default Security findByPublicIdOrThrow(final String publicId) {
        return findByPublicId(publicId).orElseThrow(() -> SecurityNotFound.byId(publicId));
    }
    default Security findByIsinOrThrow(final String isin) {
        return findByIsin(isin).orElseThrow(() -> SecurityNotFound.byIsin(isin));
    }
}