Table sans primary key avec Hibernate
Bonjour, voici mon souci.
Je veux avoir acces aux données d'une TABLE A qui n'a pas de clé primaire (car elle a été faite il y a longtemps).
Pour obtenir une clé unique de la TABLE A, je concatene 9 champs de la table (ce qui me donne un String).
Et dans mon code j'ai une variable:
List<String> listKey
qui contient l'ensemble des cles unique, et que je souhaite récupérer une liste: List<MonObject> listMonObject
correspondant au cle unique de la variable listKey.
Or la TABLE A contient + de 500 000 lignes et ca prend 2 jours au moins :(
Voici ma methode dans mon dao:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
@SuppressWarnings("unchecked")
public List<MonObject> listByConcatIdProperty(final List<String> propertyList) {
final String request = String.format(" from %s"
+ " as monObject where (monObject .id.property1 ||'.'|| monObject .id.property2 ||'.'|| "
+ "monObject .id.property3 ||'.'|| monObject .id.property4 ||'.'|| monObject .id.property5 ||'.'|| "
+ "monObject .id.property6 ||'.'|| monObject .id.property7 ||'.'|| monObject .id.property8 ||'.'|| "
+ "monObject .id.cdevcot ||'.'|| monObject .id.property9) in (:propertyList)", getReferenceClass()
.getName());
final Query query = this.getCacheableQuery(request);
query.setParameterList("propertyList", propertyList);
return query.list();
} |
Auriez-vous une idee d'une autre maniere de procéder qui serai beaucoup + rapide?
Merci d'avance.