2012-04-28 5 views
1

Bonjour, j'ai créé un exemple d'application en utilisant hibernate avec hsqldb.Hibernate n'enregistre aucun enregistrement dans la base de données

Lorsque je lance mon application, cela fonctionne très bien et ne donne aucune erreur, il donne l'accusé de réception suivant pour mes tables. Mais lorsque je vérifie les tables, il n'y a pas d'enregistrements nouvellement entrés.

Voici le code de mon application.

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC 
"-//Hibernate/Hibernate Configuration DTD//EN" 
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 

<hibernate-configuration> 

<session-factory> 
<!--Database Connection Settings --> 
<property name="connection.driver_class">org.hsqldb.jdbcDriver</property> 
<property name="connection.url">jdbc:hsqldb:file:i:/DATABASE/Employee/db_emp</property> 
<property name="hibernate.default_schema">SC_EMPLOYEE</property> 
<property name="connection.username">SA</property> 
<property name="connection.password"></property> 
<property name = "current_session_context_class">thread</property> 
<!-- JDBC connection pool (use the built-in) --> 
<property name="connection.pool_size">1</property> 

<!-- SQL dialect --> 
<property name="dialect">org.hibernate.dialect.HSQLDialect</property> 

<!-- Enable Hibernate's automatic session context management --> 
<property name="current_session_context_class">thread</property> 

<!-- Disable the second-level cache --> 
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> 

<!-- Echo all executed SQL to stdout --> 
<property name="show_sql">true</property> 

<mapping resource="cls_employee.hbm.xml"/> 
</session-factory> 

</hibernate-configuration> 

fichier cls.employee.hbm.xml

<?xml version="1.0" encoding="UTF-8"?> 

<!DOCTYPE hibernate-mapping PUBLIC 
"-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 



<hibernate-mapping> 
<class name="sample_hibernate.cls_employee" table="TBL_EMPLOYEE"> 
<id name="emp_id" type="string" column="EMP_ID"> 
    <generator class="assigned"/> 
</id> 
<property name="emp_name" type="string" column="EMP_NAME"/> 
<property name="emp_address" type="string" column="EMP_ADDRESS"/> 
<property name="emp_email" type="string" column="EMP_EMAIL"/> 
<property name="emp_phone" type="string" column="EMP_PHONE"/> 
<property name="emp_salary" type="string" column="EMP_SALARY"/> 

</class> 

</hibernate-mapping> 

cls_employee.java

public class cls_employee 
{ 

private String emp_id; 
private String emp_name; 
private String emp_address; 
private String emp_phone; 
private String emp_email; 
private String emp_salary; 

public String getEmp_id() { 
    return emp_id; 
} 
public void setEmp_id(String emp_id) { 
    this.emp_id = emp_id; 
} 
public String getEmp_name() { 
    return emp_name; 
} 
public void setEmp_name(String emp_name) { 
    this.emp_name = emp_name; 
} 
public String getEmp_address() { 
    return emp_address; 
} 
public void setEmp_address(String emp_address) { 
    this.emp_address = emp_address; 
} 
public String getEmp_phone() { 
    return emp_phone; 
} 
public void setEmp_phone(String emp_phone) { 
    this.emp_phone = emp_phone; 
} 
public String getEmp_email() { 
    return emp_email; 
} 
public void setEmp_email(String emp_email) { 
    this.emp_email = emp_email; 
} 
public String getEmp_salary() { 
    return emp_salary; 
} 
public void setEmp_salary(String emp_salary) { 
    this.emp_salary = emp_salary; 
} 

}

Principale cls_main.java

package sample_hibernate; 

import org.hibernate.HibernateException; 
import org.hibernate.SessionFactory; 
import org.hibernate.Transaction; 
import org.hibernate.cfg.Configuration; 
import org.hibernate.Session; 

public class cls_main { 

/** 
* @param args 
*/ 
public static void main(String[] args) 
{ 
    Transaction transaction = null; 
    Session session =null; 
    try 
    { 
     SessionFactory session_factory = new Configuration().configure().buildSessionFactory(); 
    session = session_factory.openSession(); 

     transaction = session.beginTransaction(); 

     System.out.println("Inserting Record"); 
     cls_employee obj_employee = new cls_employee(); 
     obj_employee.setEmp_id("2"); 
     obj_employee.setEmp_name("raj"); 
     obj_employee.setEmp_address("surat"); 
     obj_employee.setEmp_email("[email protected]"); 
     obj_employee.setEmp_phone("9979378641"); 



     cls_tbl_test test_obj = new cls_tbl_test(); 
     test_obj.setId("1"); 
     test_obj.setName("test"); 

     session.save(test_obj); 
     session.save(obj_employee); 

     session.flush(); 
     session.clear(); 


     transaction.commit(); 

     System.out.println("Record inserted successfully.."); 

    }catch(HibernateException e) 
    { 
     System.out.println(e.getMessage()); 
    } 
    finally 
    { 
     if (!transaction.wasCommitted()) { 
      transaction.rollback(); 
      } 

     session.close(); 
    } 

} 

} 

Si quelqu'un connaît ce problème, alors s'il vous plaît, aidez-moi ça ... Merci ,

Répondre

2

Votre configuration est la plupart du temps correcte. Je remarque seulement que vous avez thread thread_session_context_class deux fois dans hibernate.cfg.xml

J'ai essayé votre code source avec MySQL et cela fonctionne, donc le problème est lié à HSQLDB et pas à votre code.

Voir cette réponse:

HSQLDB and Hibernate/JPA - not persisting to disk?

Questions connexes