title: QuerySyntaxException: Unable to locate class
body: <p>I am using hql to generate an actual Java object of class JunctionManagementListDto. But I end up with the following exception on my console</p>
  
  <pre><code>org.hibernate.hql.internal.ast.QuerySyntaxException: Unable to locate class [JunctionManagementListDto] [SELECT new JunctionManagementListDto(c.siteId, c.name, c.ip, c.customer.id, zm.zone.name) FROM com.traff.hibernate.model.Controllers c, com.traff.hibernate.model.ZoneControllerMapping zm WHERE c.siteId = zm.controller.siteId  ]
  at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:54)
  at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:47)
  at org.hibernate.hql.internal.ast.ErrorCounter.throwQueryException(ErrorCounter.java:79)
  at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:255)
  at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:183)
  at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
  at org.hibernate.engine.query.spi.HQLQueryPlan.&lt;init&gt;(HQLQueryPlan.java:105)
  at org.hibernate.engine.query.spi.HQLQueryPlan.&lt;init&gt;(HQLQueryPlan.java:80)
  at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:168)
  at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:221)
  at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:199)
  at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1735)
  at com.traff.hibernate.generic.GenericDAOImpl.readListByHql(GenericDAOImpl.java:107)
  at com.traff.hibernate.daoImpl.JnMgmtLogDaoImpl.getJunctionManagementList(JnMgmtLogDaoImpl.java:29)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  at java.lang.reflect.Method.invoke(Unknown Source)
  at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
  at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
  at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
  at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
  at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)
  at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
  at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
  at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
  at com.sun.proxy.$Proxy175.getJunctionManagementList(Unknown Source)
  at com.traff.service.report.JunctionManagementReportService.prepareStatusList(JunctionManagementReportService.java:37)
  at com.traff.service.report.JunctionManagementReportService$$FastClassBySpringCGLIB$$472093e1.invoke(&lt;generated&gt;)
  at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
  at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:717)
  ......
  </code></pre>
  
  <p>My hql query is written inside JnMgmtLogDaoImpl class with all necessary imports as</p>
  
  <pre><code>public List&lt;JunctionManagementListDto&gt; getJunctionManagementList(String zoneName, Integer customerId) {     
      String hql =    "SELECT new JunctionManagementListDto(c.siteId, c.name, c.ip, c.customer.id, zm.zone.name) "
              +"FROM Controllers c, ZoneControllerMapping zm "
              +"WHERE c.siteId = zm.controller.siteId  ";
  
      if(zoneName != "")
          hql += "  and zm.zone.name='"+zoneName+"' ";
       if (customerId!=null)
          hql += "  and zm.controller.customer.id='"+customerId+"' ";
      return super.readListByHql(hql);        
  }
  </code></pre>
  
  <p>and JunctionManagementListDto is declared as</p>
  
  <p>public class JunctionManagementListDto {</p>
  
  <pre><code>private String zoneName;
  private Integer siteId;
  private String name;
  private String ip;
  private Integer customerId;
  public String getZoneName() {
      return zoneName;
  }
  public void setZoneName(String zoneName) {
      this.zoneName = zoneName;
  }
  public Integer getSiteId() {
      return siteId;
  }
  public void setSiteId(Integer siteId) {
      this.siteId = siteId;
  }
  public String getName() {
      return name;
  }
  public void setName(String name) {
      this.name = name;
  }
  public String getIp() {
      return ip;
  }
  public void setIp(String ip) {
      this.ip = ip;
  }
  public Integer getCustomerName() {
      return customerId;
  }
  public void setCustomerName(Integer customerId) {
      this.customerId = customerId;
  }
  
  public JunctionManagementListDto(Integer siteId, String zoneName, String ip, Integer customerId, String junctionName) {
      super();
      this.siteId = siteId;
      this.customerId = customerId;
      this.ip = ip;
      this.zoneName = zoneName;
      name = junctionName;
  }
  
  public JunctionManagementListDto(){
  
  }
  }
  </code></pre>
  
  <p>What is causing this exception and how can I solve it?</p>