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

GWT et Vaadin Java Discussion :

Problème avec le PersistenceManager et la transaction durant la création d'un objet.


Sujet :

GWT et Vaadin Java

  1. #1
    Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 32
    Points : 48
    Points
    48
    Par défaut Problème avec le PersistenceManager et la transaction durant la création d'un objet.
    Bonjour,

    Voici mon problème. J'ai un objet capteur pour lequel je crée des liens avec deux autres tables: système et famille de capteurs.
    La création de lien avec la table système par la création d'un systemSensorLink se passe à merveille avec le code suivant:
    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
    	public void create() {
    		PersistenceManager pm = PMF.getManager();
    		Transaction tx = pm.currentTransaction();
    		try {
    			tx.begin();
    			pm.makePersistent(this);
    			tx.commit();
    		} catch(Exception e) {
    		} finally {
    			if (tx.isActive()) {
    				tx.rollback(); // Error occurred so rollback the PM transaction
    			}
    		}
    		pm.close();
    	}
    J'utilise ensuite le même code pour la création d'un lien entre le capteur et la famille de capteurs mais cette fois-ci, la table n'est pas mise à jour. En effet, lors du débuggage, le programme passe directement de la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pm.makePersistent(this);
    à la ligne sans effectuer le . Avez-vous une idée du pourquoi de ce saut de ligne? Puis-je utiliser ce même code deux fois? Sinon, comment créer des objets dans deux tables différentes à la suite?
    Merci encore pour votre réponse.

  2. #2
    Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 32
    Points : 48
    Points
    48
    Par défaut Informations complémentaires
    Bonjour,

    Voici quelques informatinos supplémentaires suite à mon déboggage de ce matin.
    Donc, il y a bien un erreur mais comme je ne la traite pas, elle ne risque pas de s'afficher!
    La Voici: "Insert of object failed ....: Field 'ID' does not have a default value."
    Il Y a un problème avec l'attribution de Ids sur la méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Object persistedPc = persistentObjectInternal(obj, null, null, -1, objectProvider.PC)
    Si je trouve d'où cela provient, je mettrai la réponse.
    Si vous soupçonnez le manque de mon code, n'hésitez pas à m'en faire part.

  3. #3
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    Salut,
    essaies d´afficher l´erreur , et de nous la poster entierement,
    la on pourra deceller quelque chose.

    Il dit que ton ID n´a pas de valeur par defaut?
    comment as-tu defini ton ID dans la base de données?
    ya t-il un trigger qui geres cela?

    Eric

  4. #4
    Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 32
    Points : 48
    Points
    48
    Par défaut Réponse.
    Bonjour,

    Voici l'erreur que j'obtiens:

    NucleusDataStoreException:

    Insert of object "com.server.jdo.SensorFamilySensorLink@1a1f562" using statement "INSERT INTO `SENSORFAMILYSENSORLINK` (`SENSORFAMILYID`,`SENSORID`) VALUES (?,?)" failed : Field 'ID' doesn't have a default value

    Je déclare la clé primaire ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @PersistenceCapable(identityType = IdentityType.APPLICATION, detachable = "true")
    public class SensorFamilySensorLink {
     
     
    	/** The id. */
    	@PrimaryKey
    	@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    	private long id;
    Je n'initialisa pas mon ID: peut-être cela provient-il de là? MAis je pense plutôt que j'ai oublié de coder quelque chose qui permet le fonctionnement normal de la stratégie de génération automatique d'iD de GWT.
    Pour l'instant, j'ai corrigé en calculant l'ID moi-même, étant donné qu'il s'agit juste d'un long à incrémenter mais je préfèrerais que ce soit automatique.
    Dans ma base de données (MySQL Workbench), l'ID est défini ainsi: bigint(20) Primary Key.
    Je vais essayer en initialisant l'ID pour voir si cela change quelque chose.
    Merci encore pour votre aide.

Discussions similaires

  1. [Transact-SQL] Problème avec "execute" dans un "if"
    Par dj_lil dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 18/12/2007, 15h56
  2. probléme avec les transaction
    Par amazircool dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 17/12/2007, 16h44
  3. Problème avec transactions concurrentes
    Par QAYS dans le forum Connexion aux bases de données
    Réponses: 2
    Dernier message: 01/03/2007, 22h01
  4. problème avec les transactions
    Par Invité dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 20/07/2005, 11h43
  5. Problème avec des transaction
    Par Oluha dans le forum ASP
    Réponses: 16
    Dernier message: 01/03/2005, 15h40

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