sql server - The multi part identifier "subscript0_1_.partenaire_id" can not be bound after upgrading hibernate from 3 to 4 -
so i'm building project hibernat 4.0.1.final , spring 3.2.3.release , i'm trying execute query
stringbuffer requete = new stringbuffer("select distinct new ma.mamda.per.model.souscription(souscription.id, ") .append("souscription.numeropolice, souscription.dateeffet, souscription.cotisationperiodique.epargne.montant,souscription.produit.familleproduit.code, ") .append("souscription.garntieoptionnelle, souscription.dureecontrat, souscription.etat, ") .append(" souscription.souscripteur.nom, souscription.souscripteur.prenom,souscription.partenaire.libelle,souscription.partenaire.id,souscription.produit.libelle,assure.numerocompte, assure.nom, assure.prenom)") .append(" ma.mamda.per.model.souscription souscription left outer join souscription.souscripteur souscripteur") .append(" left outer join souscription.cotisationperiodique cotisationperiodique") .append(" left outer join souscription.cotisationperiodique.epargne epargne ") .append(" left outer join souscription.partenaire partenaire ") .append(" left outer join souscription.produit produit") .append(" left outer join souscription.produit.familleproduit familleproduit "); if(notempty(recherchecontratbean.getnumcomptebancaire())){ requete.append(" left outer join souscription.compte compte "); } requete.append(" left outer join souscription.assure assure "); if(notempty(recherchecontratbean.getidtypeavenant())){ requete.append(" left outer join souscription.historiques historiques "); } if(notempty(recherchecontratbean.getnumsinistre())){ requete.append(" left outer join souscription.rachattotal rachattotal ") .append(" left outer join souscription.rachatspartiel rachatspartiel "); } requete.append(" souscription.etat != ").append(recherchecontratbean.action_en_attente_validation); requete.append(" , souscription.etat != ").append(recherchecontratbean.action_invalide); if(notempty(recherchecontratbean.getstatut())){ requete.append(" , souscription.etat = ").append(recherchecontratbean.getstatut()); } if(notempty(recherchecontratbean.getnumpolice())){ requete.append(" , numeropolice '%").append(recherchecontratbean.getnumpolice().trim()).append("%'"); } if(notempty(recherchecontratbean.getnumcomptebancaire())){ requete.append(" , compte.numcomptebancaire '%").append(recherchecontratbean.getnumcomptebancaire().trim()).append("%'"); } if(notempty(recherchecontratbean.getnomassure())){ requete.append(" , assure.nom '%").append(recherchecontratbean.getnomassure().trim()).append("%'"); } if(notempty(recherchecontratbean.getnomsouscripteur())){ requete.append(" , souscripteur.nom '%").append(recherchecontratbean.getnomsouscripteur().trim()).append("%'"); } if(notempty(recherchecontratbean.getidtypeavenant())){ requete.append(" , historiques.typeavenant.id = ").append(recherchecontratbean.getidtypeavenant()); } if(notempty(recherchecontratbean.getnumsinistre())){ requete.append(" , (rachattotal.numerosinistre = ").append(recherchecontratbean.getnumsinistre()) .append(" or rachatspartiel.numerosinistre = ").append(recherchecontratbean.getnumsinistre()).append(" )"); } if(notempty(recherchecontratbean.getidproduit())){ requete.append(" , produit.id = ").append(recherchecontratbean.getidproduit()); } if(notempty(recherchecontratbean.getidpartenaire())){ requete.append(" , partenaire.id = ").append(recherchecontratbean.getidpartenaire()); } query q = genericdao.createquery(requete.tostring());
and i'm trying execute following code:
query q = getcurrentsession.createquery(requete.tostring()); try { sscrollableresults scrollableresults = query.scroll(scrollmode.forward_only); int totalelements = scalculatetotalelementsbylist(query); } catch (hibernateexception e) { if (log.iserrorenabled()) log.error("failed create scrollpage getscrollpageinstancewithtotalbyquery: " + e.getmessage()); throw e; }
the code fails in scrollableresults = query.scroll(scrollmode.forward_only); , throws following exception:
org.hibernate.exception.sqlgrammarexception: failed create scrollpage getscrollpageinstancewithtotalbyquery: multi part identifier "subscript0_1_.partenaire_id" can not bound root cause : com.microsoft.sqlserver.jdbc.sqlserverexception: multi part identifier "subscript0_1_.partenaire_id" can not bound
here partenaire
class
@entity @inheritance @discriminatorcolumn(name="type_partenaire") @cache(usage =cacheconcurrencystrategy.read_write) @batchsize(size=1000) public class partenaire implements java.io.serializable { private static final long serialversionuid = -7532086016661782539l; private integer id; private string libelle; private string code; private string numerocompte; private string raisonsocial; private string inbox; private string outbox; private set<intermediaire> intermediaires= new hashset<intermediaire>(); private set<produit> produits = new hashset<produit>(); public partenaire() { } public partenaire(integer id) { this.id = id; } public partenaire(string numerocompte) { this.numerocompte = numerocompte; } public partenaire(integer idpartenaire, string libellepartenaire) { this.id= idpartenaire; this.libelle = libellepartenaire; } /** * @return idpartenaire */ @id @generatedvalue @column(name="id") public integer getid() { return id; } public void setid(integer id) { this.id = id; } public string getlibelle() { return libelle; } public void setlibelle(string libelle) { this.libelle = libelle; } public string getcode() { return code; } public void setcode(string code) { this.code = code; } public string getraisonsocial() { return raisonsocial; } public void setraisonsocial(string raisonsocial) { this.raisonsocial = raisonsocial; } @onetomany(mappedby="partenaire") //@joincolumn(name="partenaire_id") public set<produit> getproduits() { return produits; } public void setproduits(set<produit> produits) { this.produits = produits; } public string getinbox() { return inbox; } public string getoutbox() { return outbox; } public void setinbox(string inbox) { this.inbox = inbox; } public void setoutbox(string outbox) { this.outbox = outbox; } @onetomany(mappedby="partenaire") //@joincolumn(name="partenaire_id") public set<intermediaire> getintermediaires() { return intermediaires; } public void setintermediaires(set<intermediaire> intermediaires) { this.intermediaires = intermediaires; } public string getnumerocompte() { return numerocompte; } public void setnumerocompte(string numerocompte) { this.numerocompte = numerocompte; } }
the query used work fine in hibernate 3 after migration hibernate 4 throw previous exception. missing ?
Comments
Post a Comment