Bonjour,
J'utilise HIBERNATE SEARCH et j'ai indéxé une classe Event avec un getter pour "protocolStatus" qui est indéxé, mais qui n'est pas mappé à la base de données :
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
 
@Indexed
public class Event {
         .......
         .......	
        @Field(index=Index.UN_TOKENIZED)
	public int getProtocolStatus() {
		int result = -1;
		if(eventSequences.iterator().hasNext()){
			EventSequence eventSequence = (EventSequence)this.getEventSequences().iterator().next();
			result = eventSequence.getProtocol().getCalculatedStatus();
		}
		return result;
	}
        ......
        ......
}
J'ai le problème suivant : la valeur de "protocolStatus" dans l'index semble être initialisé à la création de l'objet Event (valeur 0), mais après la valeur dans l'index n'est pas mis à jour. Dans mon application, avant que je fasse une recherche sur des objets Event, je récupère tous mes objets de la base de données et je les mets même à jour un par un :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
List<Event> events = eventDao.findByAll();
 
for (Event event : events) {
	eventDao.update(event);
}
J'ai vérifié que j'ai 3 valeurs différentes pour "protocolStatus" : 0, 2 et 6. Mais les valeurs stockées dans l'index ne sont pas mis à jour : la seule valeur que j'ai dans l'index est 0. Je ne comprends pas pourquoi l'index n'est pas mis à jour. D'après ce que j'ai lu, l'index est mis à jour quand on utilise sessionFactory de HIBERNATE et c'est le cas quand j'applique les instructions suivantes : "List<Event> events = eventDao.findByAll();" ou "eventDao.update(event);"
La raison est peut-être que "protocolStatus" n'est pas mappé à la base de données. Je ne sais pas. Est-ce que quelqu'un peut m'aider à trouver une solution ? merci d'avance.