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

    [Hibernate]Insert cancella gli altri record

    Salve ragazzi, sto usando Hibernate , ma penso di avere un problema di
    configurazione: quando eseguo un insert con il metodo session.save e
    poi eseguo la commit, l'inserimento viene effettuato in modo corretto,
    ma tutti i record che in precedenza si trovavo sul Db vengono
    cancellati. Come posso risolvere questo problema?
    Grazie

  2. #2
    Senza vedere il codice è difficile darti un'aiuto concreto.
    Ad occhio c'è un problema nel file di conf.

  3. #3
    Hai ragione, posto qui i file di configurazione e il relativo codice.
    codice:
    Mapping.hbm.xml
    <hibernate-mapping>
      <class name="mypack.Persona" lazy="true" table="AnagraficaCliente">
        <id name="id" column="ANAG_ID">
          <generator class="increment"/>
        </id>
        <property name="email" column="CLI_EMAIL"/>
        <property name="nome" column="nome"/>
      </class>
    </hibernate-mapping>
    
    hibernate.cfg.xml
    <hibernate-configuration>
        <session-factory>
            <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    	    <property name="connection.url">jdbc:mysql://127.0.0.1:3306/juwan</property>
    	    <property name="connection.username">gio</property>
    	    <property name="connection.password"></property>
    	    <property name="connection.pool_size">10</property>
    	    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    	    <property name="current_session_context_class">thread</property>
    	    <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
    	    <property name="show_sql">true</property>
    	    <property name="hbm2ddl.auto">create</property>
    	    
    	    <property name="hibernate.c3p0.minPoolSize">5</property>
    		<property name="hibernate.c3p0.maxPoolSize">20</property>
    		<property name="hibernate.c3p0.timeout">1800</property>
    		<property name="hibernate.c3p0.max_statement">50</property>
       		<mapping resource="NewMapping.hbm.xml"/>
      </session-factory>
    </hibernate-configuration>
    
    E questo è il metodo che si occupa di salvare i dati nel DB
    
    SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
    	Session session = sessionFactory.openSession();
    	Persona p=new Persona();
    	p.setNome("mario");
    	p.setEmail("mario@html.it");
    	session.beginTransaction();
            session.save(p);
    	session.flush();
    	session.clear();
    	session.getTransaction().commit();
    	session.close();

  4. #4
    Il codice sembra corretto. Puoi anche evitare di chiamare il metodo
    flush() (che viene chiamato quando committi) e forse anche la clear, tanto
    la sessione l'hai appena aperta.
    Hai visto se c'è qualche errore nella stringa sql che genera hibernate?

  5. #5
    Le queries generate sono corrette visto che le insert vengono effettuate nel DB, però come ho detto stranamente vengono cancellati tutti gli altri record presenti nella tabella

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.