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:
@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:
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.