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

JPA Java Discussion :

JPA 2.1 Enum -> impossible de récupérer la valeur en base


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Juin 2005
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 210
    Par défaut JPA 2.1 Enum -> impossible de récupérer la valeur en base
    Bonjour a tous,

    J'essaie désespérément d'utiliser les enum avec JPA 2.1 (j'utilise EclipseLink comme implementation, l'appli tourne sous Tomcat 7 et java 7).

    J'ai suivi ce tutoriel :
    http://www.nurkiewicz.com/2013/06/ma...h-convert.html

    Mais pas moyen, rien a faire ça ne fonctionne pas, je m'explique, pour commencer voici mon code :

    mon Enum :
    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
     
    public enum PaymentStatus {
    	NOT_PAID("payment.status.notPaid"), PAID("payment.status.paid"), CANCELLED(
    			"payment.status.cancelled");
     
    	private String code;
     
    	PaymentStatus(String value) {
    		this.code = value;
    	}
     
    	public String getCode() {
    		return code;
    	}
     
    }
    mon Converter :
    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
     
    import javax.persistence.AttributeConverter;
    import javax.persistence.Converter;
     
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
     
    import com.demkocompany.platform.core.enums.PaymentStatus;
     
    @Converter
    public class PaymentStatusConverter implements
    		AttributeConverter<PaymentStatus, String> {
    	private static final Logger LOG = LoggerFactory
    			.getLogger(PaymentStatusConverter.class);
     
    	@Override
    	public String convertToDatabaseColumn(PaymentStatus attribute) {
    		LOG.info("convertToDatabaseColumn = " + attribute.name());
    		return attribute.name();
    	}
     
    	@Override
    	public PaymentStatus convertToEntityAttribute(String dbData) {
    		LOG.info("convertToEntityAttribute = " + dbData);
     
    		return PaymentStatus.valueOf(dbData);
    	}
     
    }
    et ma propriété dans mon Entity :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @Convert(converter = PaymentStatusConverter.class)
    	@Column(name = "payment_status", length = 32)
    	public PaymentStatus paymentStatus;
    Paur sauver mon enum pas de soucis !
    si je passe PaymentStatus.NOT_PAID j'ai bien la string "NOT_PAID" en base.
    En revanche si je passe par exemple : PaymentStatus.CANCELLED
    quand je lis ma propriété via son getter ( getPaymentStatus() )
    je me retrouve avec "NOT_PAID" soit la 1ere valeur présente dans mon enum.

    Si je regarde de plus près les logs je vois bien mon log dans la méthode convertToDatabaseColumn lorsque je sauvegarde, en revanche je vois pas celui dans la méthode convertToEntityAttribute lorsque je lis la proprété.

    Si quelqu'un a une idée ?
    ça le ferait bien car je suis bloquer depuis déjà quelques jours , je ne sais plus trop quoi essayer, ou si vous avez une alternative ?


    Merci d'avance

  2. #2
    Membre Expert 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
    Par défaut
    salut ,
    pourquoi ne pas faire simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
            @Enumerated(EnumType.STRING)
    	@Column(name = "payment_status", length = 32)
    	private PaymentStatus paymentstatus;
    et la tu n´as pas besoin d´un converter.
    a moins que tu veuille a tout prix l´utiliser?
    Quelle version de java et que lle Framework utilises tu?

    Eric

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/11/2009, 13h34
  2. Impossible de récupérer la valeur d'un menu déroulant
    Par kyake dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/10/2009, 16h00
  3. [ODBC] ACCESS - Impossible de récupérer la valeur de @@identity (équivalent mysql_insert_id)
    Par FredFrance21 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/10/2008, 14h40
  4. [AJAX] Impossible de récupérer les valeurs en Post
    Par Tommyl dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/06/2007, 20h30
  5. [PEAR][HTML_QuickForm] Impossible de récupérer les valeurs du formulaire
    Par Mainman dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 29/05/2007, 12h15

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