Interface EventoRepository

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

@Repository public interface EventoRepository extends org.springframework.data.jpa.repository.JpaRepository<EventoEntity, EventoID>
Interfaccia DAO per l'accesso ai dati dell'entità EventoEntity.

Estende JpaRepository tipizzato con la chiave composta EventoID. Fornisce query custom JPQL per la gestione di partecipazioni e lookup specifici per tenant (Azienda).

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

    Modifier and Type
    Method
    Description
    void
    Elimina massivamente tutti gli eventi di un'azienda.
    Recupera tutti gli eventi rilevanti per un determinato utente, sia come creatore che come partecipante.
    Recupera tutti gli eventi associati a una specifica azienda.
    Recupera l'entità evento con l'identificativo locale id_evento più alto per una data 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

    • findByAzienda

      @Transactional List<EventoEntity> findByAzienda(AziendaEntity azienda)
      Recupera tutti gli eventi associati a una specifica azienda.

      Metodo derivato dalla naming convention di Spring Data JPA. Esegue una query filtrata sulla colonna Foreign Key verso AziendaEntity.

      Parameters:
      azienda - L'entità azienda target.
      Returns:
      Lista di eventi appartenenti all'azienda.
      Since:
      1.2.0
    • findAllByUtente

      @Query("SELECT DISTINCT e FROM EventoEntity e LEFT JOIN PartecipazioneEntity p ON p.evento = e WHERE p.utente = :utente OR e.creatore = :utente") @Transactional List<EventoEntity> findAllByUtente(@Param("utente") UtenteEntity utente)
      Recupera tutti gli eventi rilevanti per un determinato utente, sia come creatore che come partecipante.

      Utilizza una query JPQL custom con LEFT JOIN esplicita sull'entità PartecipazioneEntity per includere eventi a cui l'utente partecipa, unendo i risultati (in OR logico) con gli eventi creati dall'utente stesso. La clausola DISTINCT rimuove duplicati nel caso un utente sia sia creatore che partecipante.

      Parameters:
      utente - L'utente per cui cercare gli eventi.
      Returns:
      Lista di eventi correlati all'utente.
      Since:
      1.4.0
    • findMaxIdByAzienda

      @Query("SELECT e FROM EventoEntity e WHERE e.azienda = :azienda AND e.id_evento = (SELECT MAX(e2.id_evento) FROM EventoEntity e2 WHERE e2.azienda = :azienda)") EventoEntity findMaxIdByAzienda(@Param("azienda") AziendaEntity azienda)
      Recupera l'entità evento con l'identificativo locale id_evento più alto per una data azienda.

      Utilizzato per determinare il prossimo ID disponibile nella sequenza locale. La query annidata seleziona il MAX(id_evento) e la query esterna recupera l'intera entità corrispondente.

      Parameters:
      azienda - L'azienda contesto della query.
      Returns:
      L'entità EventoEntity con ID massimo, oppure null se nessun evento esiste per l'azienda.
      Since:
      1.2.0
    • deleteAllByAzienda

      void deleteAllByAzienda(AziendaEntity azienda)
      Elimina massivamente tutti gli eventi di un'azienda.

      Utile per operazioni di pulizia o dismissione tenant.

      Parameters:
      azienda - L'azienda i cui eventi devono essere rimossi.
      Since:
      1.2.0