Interface ProdottoRepository

All Superinterfaces:
org.springframework.data.repository.CrudRepository<ProdottoEntity, ProdottoID>, org.springframework.data.jpa.repository.JpaRepository<ProdottoEntity, ProdottoID>, org.springframework.data.repository.ListCrudRepository<ProdottoEntity, ProdottoID>, org.springframework.data.repository.ListPagingAndSortingRepository<ProdottoEntity, ProdottoID>, org.springframework.data.repository.PagingAndSortingRepository<ProdottoEntity, ProdottoID>, org.springframework.data.repository.query.QueryByExampleExecutor<ProdottoEntity>, org.springframework.data.repository.Repository<ProdottoEntity, ProdottoID>

public interface ProdottoRepository extends org.springframework.data.jpa.repository.JpaRepository<ProdottoEntity, ProdottoID>
Interfaccia DAO per la gestione della persistenza dei prodotti.

Estende JpaRepository utilizzando la chiave composta ProdottoID. Fornisce metodi per le operazioni CRUD standard e query personalizzate per la gestione multi-tenant, filtrando i dati in base all'azienda di appartenenza.

Since:
1.2.0
Version:
1.3.3
Author:
Modulink Team
See Also:
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Elimina massivamente tutti i prodotti associati a un'azienda.
    Restituisce la lista completa dei prodotti appartenenti a un'azienda.
    Estrae l'elenco univoco delle categorie merceologiche utilizzate da un'azienda.
    Recupera il prodotto con l'ID locale più alto per una specifica azienda.

    Methods inherited from interface org.springframework.data.repository.CrudRepository

    count, delete, deleteAll, deleteAll, deleteAllById, deleteById, existsById, findById, save

    Methods inherited from interface org.springframework.data.jpa.repository.JpaRepository

    deleteAllByIdInBatch, deleteAllInBatch, deleteAllInBatch, deleteInBatch, findAll, findAll, flush, getById, getOne, getReferenceById, saveAllAndFlush, saveAndFlush

    Methods inherited from interface org.springframework.data.repository.ListCrudRepository

    findAll, findAllById, saveAll

    Methods inherited from interface org.springframework.data.repository.ListPagingAndSortingRepository

    findAll

    Methods inherited from interface org.springframework.data.repository.PagingAndSortingRepository

    findAll

    Methods inherited from interface org.springframework.data.repository.query.QueryByExampleExecutor

    count, exists, findAll, findBy, findOne
  • Method Details

    • findMaxByAzienda

      @Query("SELECT p FROM ProdottoEntity p WHERE p.azienda = :azienda AND p.id_prodotto = (SELECT MAX(p.id_prodotto) FROM ProdottoEntity p2 WHERE p2.azienda = :azienda)") ProdottoEntity findMaxByAzienda(@Param("azienda") AziendaEntity azienda)
      Recupera il prodotto con l'ID locale più alto per una specifica azienda.

      Questa query è fondamentale per implementare la strategia di auto-incremento manuale "per tenant". Seleziona l'entità prodotto dove l'ID corrisponde al valore massimo presente per quell'azienda.

      Parameters:
      azienda - L'azienda per cui calcolare il massimo ID.
      Returns:
      L'entità ProdottoEntity con l'ID più alto, o null se nessun prodotto è presente.
      Since:
      1.2.0
    • findAllByAzienda

      List<ProdottoEntity> findAllByAzienda(AziendaEntity azienda)
      Restituisce la lista completa dei prodotti appartenenti a un'azienda.

      Metodo derivato dalla naming convention di Spring Data JPA. Esegue una SELECT filtrata per la colonna Foreign Key azienda.

      Parameters:
      azienda - L'azienda proprietaria.
      Returns:
      Lista di prodotti associati all'azienda.
      Since:
      1.2.0
    • findAllCategoriesByAzienda

      @Query("SELECT DISTINCT p.categoria FROM ProdottoEntity p WHERE p.azienda = :azienda") List<String> findAllCategoriesByAzienda(AziendaEntity azienda)
      Estrae l'elenco univoco delle categorie merceologiche utilizzate da un'azienda.

      Esegue una proiezione della colonna categoria applicando la clausola DISTINCT per eliminare i duplicati. Utile per popolare filtri di ricerca o menu a tendina.

      Parameters:
      azienda - L'azienda di riferimento.
      Returns:
      Lista di stringhe rappresentanti le categorie univoche.
      Since:
      1.3.0
    • deleteAllByAzienda

      void deleteAllByAzienda(AziendaEntity azienda)
      Elimina massivamente tutti i prodotti associati a un'azienda.

      Utilizzato nelle procedure di disattivazione o cancellazione di un tenant. L'operazione è irreversibile.

      Parameters:
      azienda - L'azienda i cui prodotti devono essere rimossi.
      Since:
      1.4.0