Requête hql.executeUpdate() ne fonctionne pas correctement
Requête hql.executeUpdate() ne fonctionne pas..
voici le code pour la mise à jour de
public static void expDue(){
Session session=HibernateUtil.getSessionFactory().openSession();
java.util.Date utilDate=new java.util.Date();
java.sql.Date sqldate=new java.sql.Date(utilDate.getTime());
Format formatter = new SimpleDateFormat("yyyy-MM-dd");
String a= formatter.format(sqldate);
boolean b=false;
if(b==false){
Query query = session.createQuery(" update Issue set dueStatus = 'true' where returnDate='"+a+"'");
int result = query.executeUpdate();
System.out.println(query.executeUpdate()+"Rows affected: " + result);
b=true;
}
ici le résultat de l'impression montre la valeur correcte,
mais pas de changement dans la base de données.
et le code hibernate
<hibernate-configuration>
<session-factory>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.HSQLDialect</property>
<!-- Database connection settings -->
<property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
<property name="hibernate.connection.url">jdbc:hsqldb:db/hsql/library;shutdown=true</property>
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.connection.password">sa</property>
<property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
<!-- JDBC connection pool (use the built-in one) -->
<property name="connection.pool_size">1</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>
<!-- disable batching so HSQLDB will propagate errors correctly. -->
<property name="jdbc.batch_size">0</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- List all the mapping documents we're using -->
<mapping class="com.habitz.librarymanagement.domain.Admin" />
<mapping class="com.librarymanagement.domain.Book" />
<mapping class="com.librarymanagement.domain.Category" />
<mapping class="com.librarymanagement.domain.Group" />
<mapping class="com.librarymanagement.domain.Issue" />
<mapping class="com.librarymanagement.domain.Member" />
</session-factory>
</hibernate-configuration>
Dans la console de l'impression de la valeur de résultats montrent des valeurs correctes. Mais la base de données ne montrent aucun changement..
si vous savez à ce sujet, veuillez partager ici les réponses..
Mise à JOUR
Transaction tx = null;
tx = session.beginTransaction();
Query query = session
.createQuery(" update Issue set dueStatus = 'true' where returnDate='"
+ a + "'");
int result = query.executeUpdate();
System.out.println(query.executeUpdate() + "Rows affected: "
+ result);
tx.commit();
- vous n'avez pas commit de la transaction dans la base de données.
- la validation des transactions comme cette Transaction tx = null; tx = session.beginTransaction(); tx.commit();
- - je mettre à jour mais ça ne marche toujours pas...
- Pourquoi avez-vous sauté .executeUpdate()? Vous devez les effectuer et ensuite valider l'opération.
- désolé c'est de ma faute. je le mettre à jour et pas de changement
- Si le problème est résolu, merci de partager, quel était le problème? =)
Vous devez vous connecter pour publier un commentaire.
Vous avez oublié d'exécuter la mise à jour avant de valider la transaction.