Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Lomio
    Registrato dal
    Jul 2010
    Messaggi
    160

    [Hibernate]Select da DB

    Ciao a tutti, il mio problema credo sia piuttosto semplice ma qualcosa non mi è chiaro.
    Ho preso da google questo codice:

    codice:
    List<Dipartimento> result=null;
    Session session = HibernateUtil .getSessionFactory().openSession();
    Transaction tx = null;
    try {
      tx = session.beginTransaction();
      Query q = session.createQuery("from Dipartimento");
      result=q.list();
      tx.commit();
    }
    catch (HibernateException he) {
      if (tx!=null)
        tx.rollback();
    throw he;
    }
    finally {
      session.close();
    }
    return result;
    Il problema è che la classe HibernateUtil non riesco a trovarla.
    Consigli?!Grazie a tutti..
    La legge e l'ordine saranno rispettati solo quando si concederà la giustizia a tutti indistintamente.

  2. #2
    E' una classe che di solito ho sviluppato sempre io e l'ho sempre posizionata dove si trovano i pojo e gli xml di mapping.

    La mia ad esempio fa così:
    Codice PHP:
    import java.io.File;
    import org.hibernate.SessionFactory
    import org.hibernate.cfg.Configuration
    import org.hibernate.classic.Session

    public class 
    HibernateUtil {
        private static 
    SessionFactory sessionFactory;

        public static 
    Configuration getInitializedConfiguration() {
            return new 
    Configuration().configure();
        }

        static {
            try{
                
    sessionFactory = new Configuration().configure().buildSessionFactory();
            }
            catch (
    Throwable ex){
                
    Logger.getLogger(HibernateUtil.class).warn("Initial SessionFactory creation failed.",new ExceptionInInitializerError(ex));
            }
        }
        
        public static 
    SessionFactory getSessionFactory(){
            return 
    sessionFactory;
        }

        public static 
    Session getSession(){
            if (
    sessionFactory == null){
                
    Configuration config HibernateUtil.getInitializedConfiguration();
                
    sessionFactory config.buildSessionFactory();
            }
            
    Session hibernateSession sessionFactory.getCurrentSession();
            return 
    hibernateSession;
        }

        public static 
    void closeSession(){
            
    HibernateUtil.getSession().close();
        }

        public static 
    void flushSession(){
            
    HibernateUtil.getSession().flush();
        }

        public static 
    Session beginTransaction(){
            
    Session hibernateSession;
            
    hibernateSession HibernateUtil.getSession();
            
    hibernateSession.beginTransaction();
            return 
    hibernateSession;
        }

        public static 
    void commitTransaction() {
            
    HibernateUtil.getSession().getTransaction().commit();
        }

        public static 
    void rollbackTransaction() {
            
    HibernateUtil.getSession().getTransaction().rollback();
        }


  3. #3
    Utente di HTML.it L'avatar di Lomio
    Registrato dal
    Jul 2010
    Messaggi
    160
    Ok, grazie mille, però adesso ho un altro problema:

    org.hibernate.MappingException: No Dialect mapping for JDBC type: -1
    at org.hibernate.dialect.TypeNames.get(TypeNames.java :56)
    at org.hibernate.dialect.TypeNames.get(TypeNames.java :81)
    at org.hibernate.dialect.Dialect.getHibernateTypeName (Dialect.java:368)
    at org.hibernate.loader.custom.CustomLoader$Metadata. getHibernateType(CustomLoader.java:559)
    at org.hibernate.loader.custom.CustomLoader$ScalarRes ultColumnProcessor.performDiscovery(CustomLoader.j ava:485)
    at org.hibernate.loader.custom.CustomLoader.autoDisco verTypes(CustomLoader.java:501)
    at org.hibernate.loader.Loader.getResultSet(Loader.ja va:1787)
    at org.hibernate.loader.Loader.doQuery(Loader.java:66 2)
    at org.hibernate.loader.Loader.doQueryAndInitializeNo nLazyCollections(Loader.java:224)
    at org.hibernate.loader.Loader.doList(Loader.java:221 1)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(L oader.java:2095)
    at org.hibernate.loader.Loader.list(Loader.java:2090)
    at org.hibernate.loader.custom.CustomLoader.list(Cust omLoader.java:289)
    at org.hibernate.impl.SessionImpl.listCustomQuery(Ses sionImpl.java:1695)
    at org.hibernate.impl.AbstractSessionImpl.list(Abstra ctSessionImpl.java:142)
    at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl. java:150)
    at com.lorenzo.giochi.scacchi.DatabaseHbm.loadAll(Dat abaseHbm.java:55)
    at com.lorenzo.giochi.scacchi.test.DatabaseHbmTest.te stLoadAll(DatabaseHbmTest.java:27)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Native MethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(De legatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.testng.internal.MethodHelper.invokeMethod(Meth odHelper.java:641)
    at org.testng.internal.Invoker.invokeMethod(Invoker.j ava:667)
    at org.testng.internal.Invoker.invokeTestMethod(Invok er.java:841)
    at org.testng.internal.Invoker.invokeTestMethods(Invo ker.java:1145)
    at org.testng.internal.TestMethodWorker.invokeTestMet hods(TestMethodWorker.java:137)
    at org.testng.internal.TestMethodWorker.run(TestMetho dWorker.java:121)
    at org.testng.TestRunner.runWorkers(TestRunner.java:1 114)
    at org.testng.TestRunner.privateRun(TestRunner.java:7 43)
    at org.testng.TestRunner.run(TestRunner.java:597)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:31 5)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner .java:310)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java :272)
    at org.testng.SuiteRunner.run(SuiteRunner.java:221)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerW orker.java:40)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker .java:83)
    at org.testng.internal.thread.ThreadUtil$CountDownLat chedRunnable.run(ThreadUtil.java:151)
    at java.util.concurrent.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:636)

    Questo è il risultato del mio test!!!

    codice:
    	public List loadAll() {
    
    		List result = null;
    		Session session = HibernateUtil.getSessionFactory().openSession();
    		Transaction tx = null;
    		try {
    			tx = session.beginTransaction();
    			Query q = session.createSQLQuery("SELECT * FROM partita;");
    			result = (List) q.list();<-- riga 55 
    			tx.commit();
    		} catch (HibernateException he) {
    			if (tx != null)
    				tx.rollback();
    			throw he;
    		} finally {
    			session.close();
    		}
    		return result;
    
    	}
    Test:

    codice:
    	@Test
    	public void testLoadAll() throws Exception {
    		list = db.loadAll();
    		Assert.assertTrue(list.getRows() > 10);
    	}
    La legge e l'ordine saranno rispettati solo quando si concederà la giustizia a tutti indistintamente.

  4. #4
    Hai configurato correttamente l'hibernate.cfg.xml?

  5. #5
    Utente di HTML.it L'avatar di Lomio
    Registrato dal
    Jul 2010
    Messaggi
    160
    Si si è configurato bene!!

    codice:
    	public boolean save(Scacchiera scacchiera, String nomePartita) {
    
    		boolean done = false;
    
    		Session session = null;
    
    		try {
    			SessionFactory sessionFactory = new Configuration().configure()
    					.buildSessionFactory();
    			session = sessionFactory.openSession();
    
    			Partita partita = new Partita();
    			partita.setNome(nomePartita);
    			partita.setPartita(scacchiera);
    			session.save(partita);
    			log.info("Partita salvata");
    			done = true;
    		} catch (Exception e) {
    			log.warn(e.getMessage());
    			done = false;
    		} finally {
    			session.flush();
    			session.close();
    		}
    		return done;
    	}
    Infatti questo codice è funzionante ed esegue correttamente le insert in db
    La legge e l'ordine saranno rispettati solo quando si concederà la giustizia a tutti indistintamente.

  6. #6
    Utente di HTML.it L'avatar di Lomio
    Registrato dal
    Jul 2010
    Messaggi
    160

    RISOLTO

    Ho risolto usando Criteria!!!

    Questo è il metodo funzionante:
    codice:
    	@SuppressWarnings("unchecked")
    	public List<Partita> loadAll() {
    
    		List<Partita> result = null;
    		Session session = null;
    
    		try {
    			SessionFactory sessionFactory = new Configuration().configure()
    					.buildSessionFactory();
    			session = sessionFactory.openSession();
    			Criteria crit = session.createCriteria(Partita.class);
    			result = crit.list();
    			log.info("Lista Partite Caricata");
    		} catch (Exception e) {
    			log.warn(e.getMessage());
    		} finally {
    			session.flush();
    			session.close();
    		}
    		return result;
    	}
    La legge e l'ordine saranno rispettati solo quando si concederà la giustizia a tutti indistintamente.

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.