Errore JPA con connessione DB remoto

di il
2 risposte

Errore JPA con connessione DB remoto

Ciao

stavo facendo degli esercizi con JPA ma ricevo un errore quando passo da un DB in locale a uno in remoto.

L'errore che mi esce sulla console è
[26 feb 2020 15:45:43,622] CUSTOM LOG FORMAT ERROR [org.jboss.as.ejb3.invocation] WFLYEJB0034: EJB Invocation failed on component UtenteDaoImpl for method public abstract void it.fai.riduzioni_compensate.dao.BaseDaoInterface.save(java.lang.Object): javax.ejb.EJBTransactionRolledbackException: WFLYJPA0060: Transaction is required to perform this operation (either use a transaction or extended persistence context)
Quando il DB a cui mi collego è localhost:1433 tutto funziona, quando lo sostituisco con lP del DB remoto l'applicativo parte, si collega, ma nel momento di salvare i dati mi restituisce quel errore.

Cercando in giro mi sembra di aver capito che sia legato a JTA ma non so come intervenire e soprattutto se devo cambiare tutti i punti in cui faccio operazioni di aggiornamento del DB o c'è un modo per centralizzare la modifica.

Spero di aver dato tutte le info necessarie

Grazie per qualsiasi suggerimento

2 Risposte

  • Re: Errore JPA con connessione DB remoto

    kiber78 ha scritto:


    Quando il DB a cui mi collego è localhost:1433 tutto funziona, quando lo sostituisco con lP del DB remoto l'applicativo parte, si collega, ma nel momento di salvare i dati mi restituisce quel errore.
    Puoi mostrare come è fatto quel tuo metodo save ?
  • Re: Errore JPA con connessione DB remoto

    La classe che contiene l'implementazione è questa
    public abstract class JPADao<T extends Persistable<?>, P> implements BaseDaoInterface<T, P> {
      @PersistenceContext
      protected EntityManager em;
    
      private final Class<T> type;
     ....
      @Override
      [b]public void save(T entity) {
        this.em.persist(entity);
      }[/b]
    }
    
    Questi sono degli estratti delle Classi/Interfacce che in qualche modo sono collegate
    La Classe che mi scatena l'eccezione
    @Default
    @Stateless
    public class UtenteDaoImpl extends JPADao<UtenteEntity, Long> implements UtenteDao {
    ....
    }
    
    
    @Local
    public interface UtenteDao extends BaseDaoInterface<UtenteEntity, Long> {
      List<UtenteEntity> findAll();
      long countAll(String status, String codiceUtente);
      void updateUtente(UtenteEntity cliente) throws SystemException;
    }
    
    
    public interface BaseDaoInterface<T, P> {
      public void save(T entity);
      public T find(P id);
      public T update(T entity);
      public void delete(T entity);
      public void deleteById(P id);
    }

    L'alberatura delle classi l'ho presa da un qualche tutorial su Internet
Devi accedere o registrarti per scrivere nel forum
2 risposte