2010-10-25 12 views
3

je veux essayer de trouver toutes les fieldValue basé sur fieldNameHibernate Exception application ON/AVEC condition LEFT JOIN

MNC.java:

private Map <String, String>formFields = new HashMap<String, String>(); 

public void setFieldValue(String fieldName, String fieldValue) { 
     if (formFields == null) { 
      formFields = new HashMap<String, String>(); 
     } 
     formFields.put(fieldName, fieldValue); 

public Map<String, String> getFormFields() { 
     return formFields; 
    } 
    public void setFormFields(Map<String, String> formFields) { 
     this.formFields = formFields; 

public String getFormField(String fieldName) { 
     if ((formFields != null) && (formFields.get(fieldName) != null)) { 
      return (String) formFields.get(fieldName); 
     } 
     return null; 
    } 

MNC.hbm.xml:

<map name="formFields" table="mncformfields" cascade="all-delete-orphan" lazy="true"> 
        <key column="id"/> 
        <index column="fieldName" type="string"/> 
        <element column="fieldValue" type="string"/> 
       </map> 

ici ma requête:

query.append("SELECT users.name,sum(mncfield.fieldValue) as TotalMoney"); 
      query.append("from MNC as mnc "); 
      query.append("left join mnc.formFields as mncfield "); 

      query.append("with (mnc.mncID= mncfield.id) and (mnc field.fieldName = 'mapMoney') "); 
      query.append("left join mnc.serviceExec as users "); 
      query.append("where (mnc.mncID= mncfield.id) "); 
      query.append("and mnc.serviceExec.id=users.id "); 
      query.append("and (mnc.mncDate between :startDate and :endDate) "); 
      query.append("and (mnc.mncGroup.id in (:ugIDs)) "); 
      query.append("group by users.name"); 

Je reçois exception:

org.hibernate.hql.ast.QuerySyntaxException: jeton inattendu: with`

Si je commente cette ligne:

//query.append("with (mnc.mnc ID= mncfield.id) and (mnc field.fieldName = 'mapMoney') "); 

puis-je obtenir l'exception :

java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: avec clause référencée tw o différents éléments de la clause

Si j'utilise on au lieu de with je reçois:

org.hibernate.hql.ast.QuerySyntaxException: jeton inattendu: sur

Répondre

1

Avez-vous remarquez que vous n'avez pas d'espace à la fin de la première ligne (devrait être après TotalMoney ou avant le suivant de)?