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

Développement Web en Java Discussion :

java JPA persistence


Sujet :

Développement Web en Java

  1. #1
    Membre à l'essai

    Homme Profil pro
    Développeur Web
    Inscrit en
    juin 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : juin 2012
    Messages : 7
    Points : 11
    Points
    11
    Billets dans le blog
    1
    Par défaut java JPA persistence
    bonsoir tout le monde, voila mon pb c'est que sur cette table Mysql:

    create table profil
    (
    num mediumint not null primary key ,
    etat varchar(8) default 'actif'
    )

    quand j'insère manuellement juste le num, le champ "etat" prend la valeur: "actif" jusque la tout est bon, mais avec EntityManager (JPA) que se soit via persist() ou bien merge(), le champ état ne prend pas automatiquement la valeur "actif" mais plutot "nul" !! voila si quelqu'un a déjà rencontré ce pb.merci

  2. #2
    Membre actif
    Avatar de ryankarl65
    Homme Profil pro
    Etudiant en Informatique | Freelance
    Inscrit en
    juillet 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Etudiant en Informatique | Freelance

    Informations forums :
    Inscription : juillet 2013
    Messages : 103
    Points : 240
    Points
    240
    Par défaut
    Citation Envoyé par nassim_2019 Voir le message
    bonsoir tout le monde, voila mon pb c'est que sur cette table Mysql:

    create table profil
    (
    num mediumint not null primary key ,
    etat varchar(8) default 'actif'
    )

    quand j'insère manuellement juste le num, le champ "etat" prend la valeur: "actif" jusque la tout est bon, mais avec EntityManager (JPA) que se soit via persist() ou bien merge(), le champ état ne prend pas automatiquement la valeur "actif" mais plutot "nul" !! voila si quelqu'un a déjà rencontré ce pb.merci

    Bonjour,
    Premierement NULL(nul ou non existant) est different de EMPTY(vide et existant). Quant tu inseres manuellement sans préciser "etat", il prend la valeur EMPTY, d'ou l'application du default qui va le changer en "actif". Le default ne change donc que les valeurs EMPTY(vides ou non présentes).

    Avec EM(JPA) tu manipules les objects, et donc la variable "etat" prends la valeur "null" au niveau de ton application. une fois envoyé au SGBD, il traite la valeur NULL en consequence. D'ou ton résultat.

    Bon j'aurais aussi besoin de ton fichier ou tu manipules EM(JPA) pour mieux t'orienter
    Shakespeare: "Je me sens toujours heureux, vous savez pourquoi...?
    Parce que je n'attends rien de personne... Les attentes font toujours mal, la vie est courte. Aimez votre vie, soyez heureux, gardez le sourire et souvenez vous: Avant de parler écoutez, Avant d'écrire réfléchissez, Avant de prier pardonnez, Avant de blesser considérez l'autre, Avant de déteste aimez... Et avant de mourir vivez"

  3. #3
    Membre à l'essai

    Homme Profil pro
    Développeur Web
    Inscrit en
    juin 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : juin 2012
    Messages : 7
    Points : 11
    Points
    11
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ryankarl65 Voir le message
    Bonjour,
    Premierement NULL(nul ou non existant) est different de EMPTY(vide et existant). Quant tu inseres manuellement sans préciser "etat", il prend la valeur EMPTY, d'ou l'application du default qui va le changer en "actif". Le default ne change donc que les valeurs EMPTY(vides ou non présentes).

    Avec EM(JPA) tu manipules les objects, et donc la variable "etat" prends la valeur "null" au niveau de ton application. une fois envoyé au SGBD, il traite la valeur NULL en consequence. D'ou ton résultat.

    Bon j'aurais aussi besoin de ton fichier ou tu manipules EM(JPA) pour mieux t'orienter
    merci frère pour la réponse, d'après ce que j'ai compris c'est que via JPA, il insert la valeur nul !!?

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    septembre 2007
    Messages
    8 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : septembre 2007
    Messages : 8 335
    Points : 14 505
    Points
    14 505
    Par défaut
    Bonjour,

    Citation Envoyé par nassim_2019 Voir le message
    merci frère pour la réponse, d'après ce que j'ai compris c'est que via JPA, il insert la valeur nul !!?
    Oui. La colonne etat accepte la valeur null. Si tu veux mettre une valeur par défaut, tu peux mettre mettre la valeur directement sur l'attribut de ton entité.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private String etat = "actif";
    A titre d'information, spécifiquement à hibernate mais pas du JPA, tu peux ne pas inserer les attributs avec la valeur null en utilisant l'annotation @DynamicInsert(true), dans ce cas ta base de données va se charger de mettre la/les valeurs par défaut sur les colonnes qui ne sont pas dans l'insert.

    A+.

  5. #5
    Membre à l'essai

    Homme Profil pro
    Développeur Web
    Inscrit en
    juin 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : juin 2012
    Messages : 7
    Points : 11
    Points
    11
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Bonjour,



    Oui. La colonne etat accepte la valeur null. Si tu veux mettre une valeur par défaut, tu peux mettre mettre la valeur directement sur l'attribut de ton entité.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private String etat = "actif";
    A titre d'information, spécifiquement à hibernate mais pas du JPA, tu peux ne pas inserer les attributs avec la valeur null en utilisant l'annotation @DynamicInsert(true), dans ce cas ta base de données va se charger de mettre la/les valeurs par défaut sur les colonnes qui ne sont pas dans l'insert.

    A+.
    voila pour @DynamicInsert(true), ca ne marche pas, je ne sais pas sachant comme platform jpa j'utilise Hibernate, merci

  6. #6
    Membre à l'essai

    Homme Profil pro
    Développeur Web
    Inscrit en
    juin 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : juin 2012
    Messages : 7
    Points : 11
    Points
    11
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Bonjour,



    Oui. La colonne etat accepte la valeur null. Si tu veux mettre une valeur par défaut, tu peux mettre mettre la valeur directement sur l'attribut de ton entité.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private String etat = "actif";
    A titre d'information, spécifiquement à hibernate mais pas du JPA, tu peux ne pas inserer les attributs avec la valeur null en utilisant l'annotation @DynamicInsert(true), dans ce cas ta base de données va se charger de mettre la/les valeurs par défaut sur les colonnes qui ne sont pas dans l'insert.

    A+.
    merci, voila pour le moment j'ai initialisé l'attribut au niveau du bean, en attendant de trouver mieux !

  7. #7
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    septembre 2007
    Messages
    8 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : septembre 2007
    Messages : 8 335
    Points : 14 505
    Points
    14 505
    Par défaut
    Citation Envoyé par nassim_2019 Voir le message
    voila pour @DynamicInsert(true), ca ne marche pas, je ne sais pas sachant comme platform jpa j'utilise Hibernate, merci
    Je l'ai dit à titre d'information pour Hibernate mais pas de l'utiliser.

    A+.

  8. #8
    Membre à l'essai

    Homme Profil pro
    Développeur Web
    Inscrit en
    juin 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : juin 2012
    Messages : 7
    Points : 11
    Points
    11
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Je l'ai dit à titre d'information pour Hibernate mais pas de l'utiliser.

    A+.
    merci frère, je vais voir de mon coté

Discussions similaires

  1. [Spring data JPA] - Persister des objets managed et detached
    Par DevForFun dans le forum Persistance
    Réponses: 1
    Dernier message: 15/06/2013, 15h15
  2. Combinaison JAVA, JPA et CDI
    Par titititiangel dans le forum JPA
    Réponses: 0
    Dernier message: 24/05/2013, 15h28
  3. Problème EJB JPA persistance méthode persist
    Par murder dans le forum JPA
    Réponses: 15
    Dernier message: 05/12/2011, 15h12
  4. Projet Java, JPA Hibernate
    Par noussa88 dans le forum JPA
    Réponses: 0
    Dernier message: 08/07/2011, 18h41

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