Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Hibernate e refresh su DB

    Ciao a tutti, ho un brutto problema con hibernate.
    Ho realizzato un'applicazione in java/mysql/hibernate utilizzando l'ambiente di sviluppo MyEclipse.
    MyEclipse tramite reverse engineering mi ha generato tutti i file [table].hbm.xml, Abstract[table].java, [table].java e [table]DAO.java.

    In pratica ho delle tabelle relazionate e i dao e i file xml sono tutti corretti.
    Quindi ad esempio ho una tabella clienti che ha N fatture e quando istanzio:

    ClienteDAO clienteDAO = new ClienteDAO();
    Cliente cliente = clienteDAO.findById(id);

    Richiamando:

    cliente.getFattura() ottengo correttamente una lista di fatture di quel cliente.

    Se provo a cancellare una di quelle fatture, e verifico su mysql che il record sia stato effettivamente cancellato ottengo che effettivamente il record non esiste più, quindi la commit ha funzionato egregiamente e la sessione ha rilasciato le modifiche all'esterno.

    Successivamente se richiedo nuovamente la lista delle fatture del cliente con lo stesso id ottengo nella lista ancora quella fattura, anche se sul DB non c'è più perchè cancellato definitivamente.

    Il metodo che utilizzo per cancellare un oggetto è il seguente:

    public void delete(Object object) throws Exception
    {

    Transaction tx = null;

    try
    {
    Session session = HibernateSessionFactory.getSession();
    tx = session.beginTransaction();

    session.delete(object);
    tx.commit();
    }
    catch (HibernateException e)
    {
    System.out.print("Errore Hibernate!");
    e.printStackTrace();
    if (tx != null && tx.isActive());
    tx.rollback();
    }
    catch (Exception e)
    {
    System.out.print("Errore Generale!");
    e.printStackTrace();
    if (tx != null && tx.isActive());
    tx.rollback();

    }

    }

    E come scritto sopra il record viene correttamente cancellato in MySQL!
    Potete aiutarmi in qualche modo che sono disperato?

    Il file hibernate.cfg.xml è il seguente:

    <session-factory>
    <property name="connection.username">user</property>
    <property name="connection.url">
    jdbc:mysql://localhost/hermes3
    </property>
    <property name="dialect">
    org.hibernate.dialect.MySQLDialect
    </property>
    <property name="myeclipse.connection.profile">
    com.mysql.jdbc.Driver
    </property>
    <property name=" connection.driver_class">
    com.mysql.jdbc.Driver
    </property>
    <property name="show_sql">true</property>
    <property name="connection.pool_size">1</property>
    <property name="jdbc.fetch_size">0</property>
    <property name="jdbc.use_streams_for_binary">true</property>
    <property name="max_fetch_depth">3</property>
    <property name="cache.use_query_cache">false</property>
    <property name="jdbc.batch_size">20</property>
    <property name="cglib.use_reflection_optimizer ">false</property>
    <property name="cache.use_minimal_puts">false</property>
    <property name="cache.use_query_cache">false</property>
    .........

    Anche cancellando tutte le property il problema rimane.

    Grazie,
    g.

  2. #2
    Utente di HTML.it L'avatar di Zetato
    Registrato dal
    Nov 2007
    Messaggi
    21
    prova a fare il session.flush.....


  3. #3
    Fatto, non succede niente!!! Altre idee?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.