IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Java Discussion :

Problème transaction rollback requête alter table


Sujet :

Spring Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 79
    Points : 73
    Points
    73
    Par défaut Problème transaction rollback requête alter table
    Bonjour,

    Le rollback d'une requête alter table ne fonctionne pas pour le code suivant, par contre le rollback des requêtes insert fonctionne. J'utilise une base de données HSQLDB.

    this my service class :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    public class DataBaseMigrationService extends HibernateDaoSupport implements
    IDataBaseMigrationService {
     
    public void runDataBaseMigration() {
     
    this.getHibernateTemplate().execute(new HibernateCallback() {
     
    	public Object doInHibernate(Session session)
    			throws HibernateException, SQLException {
     
    		// Check if the column I want to add exists or not
    		SQLQuery selectQuery = session
    			.createSQLQuery("SELECT COLUMN_NAME FROM \"INFORMATION_SCHEMA\".\"SYSTEM_COLUMNS\" where "
    			+ "TABLE_NAME = 'IO_MODULES' and COLUMN_NAME = 'CH_ADDR_GENERATORS'");
    		Object uniqueResult = selectQuery.uniqueResult();
     
    		if (uniqueResult == null) {
     
    			SQLQuery updateQuery = session
    					.createSQLQuery("alter table IO_MODULES add COLUMN CH_ADDR_GENERATORS varbinary(255)");
    			updateQuery.executeUpdate();
     
    			// this call will insert data in the new created column
    			setChannelsAdressGenerator4AllModules();
     
    		}
     
    		return uniqueResult;
    	}
     
    });
     
    }
     
    private void setChannelsAdressGenerator4AllModules() {
    // this method make inserts in database and use HibernateTemplate
    ......
    // an error occurs here, and logically the alter table query in the previous code must be rollbacked
    }
     
    }
    The interface of my service :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    package com.rockwellautomation.neat.v5.connector.services.interfaces;
     
    public interface IDataBaseMigrationService {
     
    	public void runDataBaseMigration();
    }
    Declratif transaction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    	  <property name="sessionFactory" ref="factory" />
    	</bean>
    	<tx:advice id="txAdvice" transaction-manager="transactionManager">
    		<tx:attributes>
    			<tx:method name="run*" />
    		</tx:attributes>
    	</tx:advice>
    	<aop:config>
    		<aop:pointcut id="txServiceOperation" expression="execution(* com.rockwellautomation.neat.v5.connector.services.interfaces.*.*(..))"/>
    		<aop:advisor advice-ref="txAdvice" pointcut-ref="txServiceOperation"/>
    	</aop:config>
    Merci pour votra précieuse aide.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 149
    Points : 167
    Points
    167
    Par défaut
    Je ne pense pas qu'un alter se rollback. Ca l'est peut etre sur certaines bases, mais ca doit être très spécifique.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 79
    Points : 73
    Points
    73
    Par défaut
    Effectivement il semble que la HSQLDB ne supporte pas de rollback sur une requête alter table, je parle de la version 2.0 de cette base

Discussions similaires

  1. [2012] Problème de conflit d'ALTER TABLE avec la contrainte FOREIGN KEY
    Par Caliimero dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/03/2014, 19h03
  2. Probleme requête alter table
    Par jeronimo83 dans le forum Requêtes
    Réponses: 1
    Dernier message: 17/01/2010, 16h21
  3. [adodbapi] Requête ALTER TABLE
    Par Marie S. dans le forum Bibliothèques tierces
    Réponses: 1
    Dernier message: 19/12/2008, 14h30
  4. Erreur rencontrée lors d'une requête ALTER TABLE
    Par benoît82 dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/02/2008, 15h59
  5. Problème requête ALTER TABLE
    Par 1tsiMat dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 29/06/2006, 13h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo