Problème d'encodage avec Hibernate
Bonjour,
Je suis actuellement sur une fonctionnalité dont le but est de charger dans une base de données ORACLE un fichier excel lu depuis JAVA.
Le fichier est lu via l'API POI :
* Lecture du fichier et des cellules
* Comparaison d'une cellule lue avec des données en base via Hibernate
* Si l'on retrouve le libellé lu dans le fichier dans la base on fait une mise à jour en base de données
Pour simplifier, je passe la variable "doc" à la fonction "findAllByDocIdClient" mais cette fonction ne donne aucune ligne.
Je pense qu'il y a clairement un problème d'encodage et de ce fait nous avons rajouté la fonction "filterString" mais la fonction "findAllByDocIdClient" ne me renvoie aucune ligne.
Pourtant, je passe : doc="Ayants*droit*économiques"
Et en base ce document existe bien !!
Merci pour votre aide.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
public List findAllByDocIdClient(String doc, Long idClient){
List result = null;
Session session = sessionFactory.getCurrentSession();
try {
session.beginTransaction();
result = session.createCriteria(Kyc.class)
.add(Restrictions.eq("client.CIdClient",idClient))
.add(Restrictions.like("LDocument",filterString(doc)))
.list();
} catch (HibernateException he) {
log.error("ERROR ----------- findAllByDocIdClient");
throw he;
}finally{
session.getTransaction().commit();
HibernateUtil.closeSession(session);
return result;
}
} |
Code:
1 2 3 4 5 6 7 8 9 10
|
private String filterString (String valeur){
byte[] temp = valeur.getBytes();
for(int i=0;i<temp.length;i++){
if (temp[i] == -96){
temp[i] = (byte)' ';
}
}
return new String(temp);
} |