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

Hibernate Java Discussion :

Attribut Boolean : not-null property references a null or transient value


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 23
    Par défaut Attribut Boolean : not-null property references a null or transient value
    Bonjour,

    Je suis sur un projet java et je tente désespérément de persister un objet en base de données. L'opération semble basique et pourtant je me heurte à un mur depuis un moment.

    J'ai un objet "ProduitSouscrit" qui possède un attribut "dematerialise" de type "Boolean" (il aurait surement été préférable d'utiliser un "boolean" mais le gars qui a codé cette classe n'était visiblement pas de cet avis).

    Quoi qu'il en soit, je crée un "new ProduitSouscrit()", je valorise son attribut "dematerialise" via un "produitSouscrit.setDematerialise(Boolean.valueOf(false));" et je tente de le persister. En code, ça donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ProduitSouscrit produitSouscrit = new ProduitSouscrit();
    produitSouscrit.setDematerialise(Boolean.valueOf(false));
     
    if(produitSouscrit.getId() == null)
    {
    	this.getEntityManager().persist(produitSouscrit);
    }
    Aucun soucis avec l'EntityManager, je l'utilise pour d'autres persist et ca passe crème. Par contre, au moment de persister le ProduitSouscrit, il me sort :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Caused by org.hibernate.PropertyValueException with message: "not-null property references a null or transient value: com.soclecommun.produit.entite.ProduitSouscrit.dematerialise"
    (l'erreur en entier plus bas).

    Je n'arrive pas à comprendre le pourquoi de l'erreur... que ca soit en mode debug ou via un "System.out.println()", je m'assure que l'attribut "dematerialise" est bien valoriser. Est-ce que cela viendrait du fait que c'est un "Boolean" avec un grand "B" ?

    J'ai essayé également :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    produitSouscrit.setDematerialise(new Boolean(false));
    produitSouscrit.setDematerialise(false);
    Même erreur.

    Merci d'avance pour vos idées.


  2. #2
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    On peut voir le code de ta classe (et le fichier de mapping si ce n'est pas fait par annotations) ?

  3. #3
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 23
    Par défaut
    Yup, le voila :

    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
     
    @Entity
    @Table(name = "L58MAAI")
    @Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
    @org.hibernate.annotations.Entity(dynamicInsert = true, dynamicUpdate = true)
    @SuppressWarnings("serial")
    public class ProduitSouscrit implements Serializable 
    {
    	/** id du produit souscrit. */
    	@Id
    	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "L58SAAI_COSPRO")
    	@SequenceGenerator(name = "L58SAAI_COSPRO", sequenceName = "L58SAAI_COSPRO", allocationSize = 1)
    	@Column(name = "COSPRO", unique = true, nullable = false, insertable = false, updatable = false)
    	private Long id;
    	/** Version. */
    	@Version
        @Column(name="VEPRSO")
        private int version;
    	/** Format dematerialise autorise. */
    	@Column(name = "DEMAT")
    	@NotNull
    	private Boolean dematerialise;
     
    ... d'autres attributs...
     
    ... et même des méthodes (dont getter/setter pour tous les attributs en public)...
    }

  4. #4
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    J'aurais bien voulu voir les méthodes, et en particulier le getter/setter de l'attribut (on ne sait jamais ^^).

    Question annexe : si tu le met à True, ça passe ?

    (et sinon, utilise plutôt Boolean.TRUE et Boolean.FALSE)

  5. #5
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 23
    Par défaut
    Voici les getters/setters :

    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
     
    	/**
             * Getter de l'indicateur si la commande de titres dematerialises est autorisee.
             * @return indicateur si la commande de titres dematerialises est autorisee
             */
    	public Boolean getDematerialise() {
    		return dematerialise;
    	}
     
    	/**
             * Setter si la commande de titres dematerialises est autorisee.
             * @param aDematerialise commande de titres dematerialises autorisee
             */
    	public void setDematerialise(Boolean aDematerialise) {
    		this.dematerialise = aDematerialise;
    	}
    J'ai essayé avec des valeurs à "true", avec "Boolean.TRUE" et "Boolean.FALSE", pas mieux...

    Merci encore pour ton aide.

  6. #6
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Et j'imagine que si tu enlèves le @NotNull, ça sauvegarde correctement ?

    Là je vois plus que passer en Debug pour voir à quel moment ta propriété passe à null ...

Discussions similaires

  1. Erreur "not-null property references a null or transient value"
    Par mactar85 dans le forum Frameworks Web
    Réponses: 2
    Dernier message: 14/08/2013, 10h06
  2. Erreur "not-null property references"
    Par ARASN dans le forum Hibernate
    Réponses: 1
    Dernier message: 13/06/2013, 21h53
  3. Réponses: 6
    Dernier message: 29/11/2010, 17h09
  4. [hibernate] many-to-one not-null property
    Par chtiboss dans le forum Hibernate
    Réponses: 2
    Dernier message: 10/07/2007, 11h16

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