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 :

postLoad ne fonctionne pas


Sujet :

JPA Java

  1. #1
    Membre confirmé
    Inscrit en
    Août 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 67
    Par défaut postLoad ne fonctionne pas
    bonjour,

    je voudrais utiliser le @PostLoad, mais il n'est jamais appelé lors du chargement des objets.
    J'ai donc essayé le @EntityListeners, mais même problème
    Pourtant le constructeur est , lui, bien appelé.
    J'utilise eclipse link 2

    Voici un extrait du code:
    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
     
    @Entity
    @Table(catalog = "sdcarbrp", schema = "dbo", name = "t_car_location")
    @EntityListeners( { TestEventListener.class })
    public class Location implements Serializable,Comparable<Location>{
    	@Id
    	@Column(name = "id_location")
    	@GeneratedValue(strategy = GenerationType.AUTO)
    	private String id;
     
    	@Column(name = "nm_name")
    	private String name;
     
    	@Column(name = "fl_deleted")
    	private boolean deleted = false;
     
    	public Location(){
    		System.out.println("INIT");
    	}
     
     
    	@PostLoad
    	public void postLoad() {
    		System.out.println("OOOOKKKKK");
    		if (id == null || id.trim().length() == 0)
    			name = "";
    		char subChar = id.charAt(Constant.LG_CODE_LOCATION - 1);
    		boolean isDigit = Character.isDigit(subChar);
    		String newId = id.substring(0, Constant.LG_CODE_LOCATION);
    		String newName = isDigit ? newId + "XXX" : Constant.LOCATION_NBY_START + newId;
    		name = newName;
    	}
    Une idée ?
    Merci

  2. #2
    Membre confirmé
    Inscrit en
    Août 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 67
    Par défaut
    le seul moyen que j'ai trouve est le suivant :
    il faut que le listerner implémente DescriptorEventListener, qui est une classe de eclipselink.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    @Entity
    @Table(catalog = "sdcarbrp", schema = "dbo", name = "v_care_list_location")
    @EntityListeners( { LocationEventListener.class })
    //@OptimisticLocking(type=OptimisticLockingType.VERSION_COLUMN)
    public class Location implements Serializable, Comparable<Location> {
    ....
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class LocationEventListener implements DescriptorEventListener {
    	public void aboutToDelete(DescriptorEvent arg0) {
    	}
     
    	public void aboutToInsert(DescriptorEvent arg0) {
    	}
     
    	public void aboutToUpdate(DescriptorEvent arg0) {
    	}
     
    .....
    Mais c'est quand même étrange que le @postLoad de base ne fonctionne pas.

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par jmturc Voir le message

    Mais c'est quand même étrange que le @postLoad de base ne fonctionne pas.
    étant donné que çà marche très bien ici, cela doit être lié à votre contexte…

    cela peut venir de la façon dont vos classes sont instrumentées (donc de ce que vous utilisez dans votre applicationContext…)
    et de votre hiérarchie de services/repositories… : est-ce que la classe qui exécute le query est une bean ?

  4. #4
    Membre confirmé
    Inscrit en
    Août 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 67
    Par défaut
    je n'utilise pas spring ni les ejb, et j' utilise tomcat.
    j'ai fait mon propre service avec un singleton,
    La méthode du service ne fait que l'execution du jpql tres simple du type "select l from Location l".

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par jmturc Voir le message
    je n'utilise pas spring ni les ejb, et j' utilise tomcat.
    j'ai fait mon propre service avec un singleton,
    La méthode du service ne fait que l'execution du jpql tres simple du type "select l from Location l".
    pas d'EntityManager donc ?

  6. #6
    Membre confirmé
    Inscrit en
    Août 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 67
    Par défaut
    si bien sur, j'utilise eclipselink

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par jmturc Voir le message
    si bien sur, j'utilise eclipselink
    Bug 315154

    "if a descriptor does not have any event listeners, then the default event listeners are not triggered."

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/01/2004, 11h14
  2. [FP]Writeln ne fonctionne pas !
    Par néo333 dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 01/11/2003, 23h47
  3. UNION qui ne fonctionne pas
    Par r-zo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/07/2003, 10h04
  4. Un Hint sur un PopupMenu ne fonctionne pas !!??
    Par momox dans le forum C++Builder
    Réponses: 6
    Dernier message: 26/05/2003, 16h48
  5. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10

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