hi all my name is Edson Chavez From Peru, my nick Grubhart
abstract:
i ran same hql query (only select section is different) and one works but another launch exception 
Code:
List<Aplicativos>  aplicativos =   newSession.createQuery("select a from  Aplicativos a join a.liberadores l where a.idAplicativo = :idAplicativo and l.empleado.contrata.idContrata = :idContrata").setString("idAplicativo", idAplicativo).setString("idContrata", idContrata).list();
		this works i have a list of Aplicativos when i change select section to
Code:
List<LiberadorContrata>  liberadores =   newSession.createQuery("select l from  Aplicativos a join a.liberadores l where a.idAplicativo = :idAplicativo and l.empleado.contrata.idContrata = :idContrata").setString("idAplicativo", idAplicativo).setString("idContrata", idContrata).list();
		the database server is sql server 2005
second query fails
hibernate catch:
org.hibernate.exception.GenericJDBCException: could not execute query 
sql server launch this exception:
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: El nombre de columna col_0_1_ no es válido.
this say column name col_0_1 is invalid but i can't see this column in generated sql!!!!
my console output show this message 
Code:
24-jun-2010 14:06:03 org.hibernate.type.NullableType nullSafeGet
INFO: could not read column value from result set: col_0_1_; El nombre de columna col_0_1_ no es válido.
24-jun-2010 14:06:03 org.hibernate.util.JDBCExceptionReporter logExceptions
ADVERTENCIA: SQL Error: 0, SQLState: S1093
24-jun-2010 14:06:03 org.hibernate.util.JDBCExceptionReporter logExceptions
GRAVE: El nombre de columna col_0_1_ no es válido.
here the sql generated:
Code:
Hibernate: 
    select
        liberadore1_.idAplicativo as col_0_0_ 
    from
        dbo.Aplicativos aplicativo0_ 
    inner join
        dbo.ContratasLiberador liberadore1_ 
            on aplicativo0_.idAplicativo=liberadore1_.idAplicativo,
        dbo.ContratasEmpleados empleado2_ 
    where
        liberadore1_.idEmpleado=empleado2_.idEmpleado 
        and aplicativo0_.idAplicativo=? 
        and empleado2_.idContrata=?
i search for 2 days and i don't know what's the problem i really apreciate some hints or help in this error,
next my beans code, dao class and test case used:
Aplicativos.java
Code:
package domain;
import java.sql.Date;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.*;
import org.hibernate.annotations.CollectionOfElements;
@Entity
public class Aplicativos {
   private String idAplicativo;
   private String aplicativo;
   private String fechaRegistro;
   private String usuarioRegistra;
   private String fechaModifica;
   private String usuarioModifica;
   private String activo;
   
   private List <LiberadorContrata> liberadores = new ArrayList<LiberadorContrata>();
   public Aplicativos(){
      super();
   }
   
   
   @Id
   public String getIdAplicativo() {
      return idAplicativo;
   }
   public void setIdAplicativo(String idAplicativo) {
      this.idAplicativo = idAplicativo;
   }
   public String getAplicativo() {
      return aplicativo;
   }
   public void setAplicativo(String aplicativo) {
      this.aplicativo = aplicativo;
   }
   public String getFechaRegistro() {
      return fechaRegistro;
   }
   public void setFechaRegistro(String fechaRegistro) {
      this.fechaRegistro = fechaRegistro;
   }
   public String getUsuarioRegistra() {
      return usuarioRegistra;
   }
   public void setUsuarioRegistra(String usuarioRegistra) {
      this.usuarioRegistra = usuarioRegistra;
   }
   public String getFechaModifica() {
      return fechaModifica;
   }
   public void setFechaModifica(String fechaModifica) {
      this.fechaModifica = fechaModifica;
   }
   public String getUsuarioModifica() {
      return usuarioModifica;
   }
   public void setUsuarioModifica(String usuarioModifica) {
      this.usuarioModifica = usuarioModifica;
   }
   public String getActivo() {
      return activo;
   }
   public void setActivo(String activo) {
      this.activo = activo;
   }
    
   
   @CollectionOfElements(fetch = FetchType.EAGER)
   @JoinTable (name="ContratasLiberador", joinColumns = @JoinColumn(name = "idAplicativo"))
   public List<LiberadorContrata> getLiberadores() {
      return liberadores;
   }
   public void setLiberadores(List<LiberadorContrata> liberadores) {
      this.liberadores = liberadores;
   }
}
LiberadorContrata.java
Code:
package domain;
import javax.persistence.*;
import org.hibernate.annotations.Parent;
@Embeddable
public class LiberadorContrata {
   
   private Aplicativos aplicativo;
   private Empleado empleado;
   private String fechaRegistro;
   private String usuarioRegistra;
   private String fechaModifica;
   private String usuarioModifica;
   private String activo;
   
   
   
   @Parent
   public Aplicativos getAplicativo() {
      return aplicativo;
   }
   public void setAplicativo(Aplicativos aplicativo) {
      this.aplicativo = aplicativo;
   }
   @ManyToOne
   @JoinColumn(name = "idEmpleado", nullable= false, updatable= false)
   public Empleado getEmpleado() {
      return empleado;
   }
   
   public void setEmpleado(Empleado empleado) {
      this.empleado = empleado;
   }
   
   @Column
   public String getFechaRegistro() {
      return fechaRegistro;
   }
   
   public void setFechaRegistro(String fechaRegistro) {
      this.fechaRegistro = fechaRegistro;
   }
   
   @Column
   public String getUsuarioRegistra() {
      return usuarioRegistra;
   }
   
   public void setUsuarioRegistra(String usuarioRegistra) {
      this.usuarioRegistra = usuarioRegistra;
   }
   
   @Column
   public String getFechaModifica() {
      return fechaModifica;
   }
   
   public void setFechaModifica(String fechaModifica) {
      this.fechaModifica = fechaModifica;
   }
   
   @Column
   public String getUsuarioModifica() {
      return usuarioModifica;
   }
   
   public void setUsuarioModifica(String usuarioModifica) {
      this.usuarioModifica = usuarioModifica;
   }
   
   @Column
   public String getActivo() {
      return activo;
   }
   
   public void setActivo(String activo) {
      this.activo = activo;
   }   
}
Empleado.java
Code:
package domain;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table (name="ContratasEmpleados")
public class Empleado {
   
   
   private String idEmpleado;
   private String empleado;
   private String password;
   private String mail;
   private String fechaRegistra;
   private String usuarioRegistra;
   private String fechaModifica;
   private String usuarioModifica;
   private String activo;
   
   
   private Contratas contrata;
   
   
   public Empleado(){
      super();
   }
   
   @Id
   public String getIdEmpleado() {
      return idEmpleado;
   }
   public void setIdEmpleado(String idEmpleado) {
      this.idEmpleado = idEmpleado;
   }
   public String getEmpleado() {
      return empleado;
   }
   public void setEmpleado(String empleado) {
      this.empleado = empleado;
   }
   public String getPassword() {
      return password;
   }
   public void setPassword(String password) {
      this.password = password;
   }
   public String getMail() {
      return mail;
   }
   public void setMail(String mail) {
      this.mail = mail;
   }
   public String getFechaRegistra() {
      return fechaRegistra;
   }
   public void setFechaRegistra(String fechaRegistra) {
      this.fechaRegistra = fechaRegistra;
   }
   public String getUsuarioRegistra() {
      return usuarioRegistra;
   }
   public void setUsuarioRegistra(String usuarioRegistra) {
      this.usuarioRegistra = usuarioRegistra;
   }
   public String getFechaModifica() {
      return fechaModifica;
   }
   public void setFechaModifica(String fechaModifica) {
      this.fechaModifica = fechaModifica;
   }
   public String getUsuarioModifica() {
      return usuarioModifica;
   }
   public void setUsuarioModifica(String usuarioModifica) {
      this.usuarioModifica = usuarioModifica;
   }
   public String getActivo() {
      return activo;
   }
   public void setActivo(String activo) {
      this.activo = activo;
   }
   @ManyToOne
   @JoinColumn (name="idContrata",  nullable=false)
   public Contratas getContrata() {
      return contrata;
   }
   public void setContrata(Contratas contrata) {
      this.contrata = contrata;
   }   
}
Contratas.java
Code:
package domain;
import javax.persistence.*;
@Entity
public class Contratas {
   
   private String idContrata;
   private String contrata;
   private String fechaRegistro;
   private String usuarioRegistra;
   private String fechaModifica;
   private String usuarioModifica;
   private String activo;
   private String idSociedad;
   
   public Contratas(){
      super();
   }
   
   @Id
   public String getIdContrata() {
      return idContrata;
   }
   public void setIdContrata(String idContrata) {
      this.idContrata = idContrata;
   }
   public String getContrata() {
      return contrata;
   }
   public void setContrata(String contrata) {
      this.contrata = contrata;
   }
   public String getFechaRegistro() {
      return fechaRegistro;
   }
   public void setFechaRegistro(String fechaRegistro) {
      this.fechaRegistro = fechaRegistro;
   }
   public String getUsuarioRegistra() {
      return usuarioRegistra;
   }
   public void setUsuarioRegistra(String usuarioRegistra) {
      this.usuarioRegistra = usuarioRegistra;
   }
   public String getFechaModifica() {
      return fechaModifica;
   }
   public void setFechaModifica(String fechaModifica) {
      this.fechaModifica = fechaModifica;
   }
   public String getUsuarioModifica() {
      return usuarioModifica;
   }
   public void setUsuarioModifica(String usuarioModifica) {
      this.usuarioModifica = usuarioModifica;
   }
   public String getActivo() {
      return activo;
   }
   public void setActivo(String activo) {
      this.activo = activo;
   }
   
   public String getIdSociedad() {
      return idSociedad;
   }
   public void setIdSociedad(String idSociedad) {
      this.idSociedad = idSociedad;
   }   
}
this class run hql querys
AplicativosDaoImpl
Code:
package dao.impl;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import org.hibernate.Session;
import org.hibernate.Transaction;
import dao.AplicativosDao;
import domain.Aplicativos;
import domain.Empleado;
import domain.LiberadorContrata;
import com.hochschild.util.HibernateUtil;
public class AplicativosDaoImpl implements AplicativosDao {
   
   
   public Aplicativos[] getAllAplicativos(){
      Session newSession = HibernateUtil.getSessionFactory().openSession();
      Transaction newTransaction = newSession.beginTransaction();
      Aplicativos[] aplicativos =  (Aplicativos[]) newSession.createQuery("from Aplicativos").list().toArray(new Aplicativos[0]);
      
      newTransaction.commit();
      newSession.close();
      HibernateUtil.shutdown();
      
      
      
      return aplicativos ;
   }
   
   public List<Aplicativos> getAplicativos( String idAplicativo, String idContrata){
      Session newSession = HibernateUtil.getSessionFactory().openSession();
      Transaction newTransaction = newSession.beginTransaction();
      
      List<Aplicativos>  aplicativos =   newSession.createQuery("select a from  Aplicativos a join a.liberadores l where a.idAplicativo = :idAplicativo and l.empleado.contrata.idContrata = :idContrata").setString("idAplicativo", idAplicativo).setString("idContrata", idContrata).list();
      
      newTransaction.commit();
      newSession.close();
      HibernateUtil.shutdown();
      
      return aplicativos;
   }
   
   public List<LiberadorContrata> getLiberadores( String idAplicativo, String idContrata){
      Session newSession = HibernateUtil.getSessionFactory().openSession();
      Transaction newTransaction = newSession.beginTransaction();
      List<LiberadorContrata>  liberadores =   newSession.createQuery("select l from  Aplicativos a join a.liberadores l where a.idAplicativo = :idAplicativo and l.empleado.contrata.idContrata = :idContrata").setString("idAplicativo", idAplicativo).setString("idContrata", idContrata).list();
      
      newTransaction.commit();
      newSession.close();
      HibernateUtil.shutdown();
      
      return liberadores;
   }
   
}
you can see methods getLibertadores and getAplicativos use hql querys i wrote above
now my test case:
AplicativosDaoImplTest
Code:
package dao.impl;
import static org.junit.Assert.*;
import java.util.List;
import org.junit.Test;
import domain.*;
public class AplicativosDaoImplTest {
   
   @Test
   public void testGetAplicativos() {
      AplicativosDaoImpl aplicativosDao = new AplicativosDaoImpl();
      List<Aplicativos> liberadores = aplicativosDao.getAplicativos("1", "1");
      assertTrue(liberadores.size()>0 );
      
      LiberadorContrata liberador = liberadores.get(0).getLiberadores().get(0);
      System.out.println(liberador.getEmpleado().getContrata().getIdContrata());
      
   }
   
   @Test
   public void testGetLiberadores() {
      AplicativosDaoImpl aplicativosDao = new AplicativosDaoImpl();
      List<LiberadorContrata> liberadores = aplicativosDao.getLiberadores("1", "1");
      assertTrue(liberadores.size()>0 );
      LiberadorContrata liberador = liberadores.get(0);
      System.out.println(liberador.getEmpleado().getContrata().getIdContrata());
   }
   
   
}
both tests print same expression: variable liberador.getEmpleado().getContrata().getIdContrata() 
first test pass and print correct value but second test have error this is the error log:
Code:
org.hibernate.exception.GenericJDBCException: could not execute query
   at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126)
   at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114)
   at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
   at org.hibernate.loader.Loader.doList(Loader.java:2235)
   at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129)
   at org.hibernate.loader.Loader.list(Loader.java:2124)
   at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401)
   at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363)
   at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
   at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1149)
   at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
   at com.hochschild.dao.impl.AplicativosDaoImpl.getLiberadores(AplicativosDaoImpl.java:51)
   at com.hochschild.dao.impl.AplicativosDaoImplTest.testGetLiberadores(AplicativosDaoImplTest.java:25)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
   at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
   at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
   at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
   at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
   at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
   at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:73)
   at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46)
   at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
   at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
   at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
   at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
   at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
   at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
   at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
   at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: El nombre de columna col_0_1_ no es válido.
   at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
   at com.microsoft.sqlserver.jdbc.SQLServerResultSet.findColumn(Unknown Source)
   at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getString(Unknown Source)
   at org.hibernate.type.StringType.get(StringType.java:41)
   at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:184)
   at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:173)
   at org.hibernate.type.ManyToOneType.hydrate(ManyToOneType.java:126)
   at org.hibernate.type.ComponentType.hydrate(ComponentType.java:583)
   at org.hibernate.type.ComponentType.nullSafeGet(ComponentType.java:298)
   at org.hibernate.loader.hql.QueryLoader.getResultColumnOrRow(QueryLoader.java:356)
   at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:629)
   at org.hibernate.loader.Loader.doQuery(Loader.java:724)
   at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
   at org.hibernate.loader.Loader.doList(Loader.java:2232)
   ... 33 more
my console show this output:
Code:
24-jun-2010 14:06:03 org.hibernate.type.NullableType nullSafeGet
INFO: could not read column value from result set: col_0_1_; El nombre de columna col_0_1_ no es válido.
24-jun-2010 14:06:03 org.hibernate.util.JDBCExceptionReporter logExceptions
ADVERTENCIA: SQL Error: 0, SQLState: S1093
24-jun-2010 14:06:03 org.hibernate.util.JDBCExceptionReporter logExceptions
GRAVE: El nombre de columna col_0_1_ no es válido.
well, sorry about the long post but i wanna put most information possible i really appreciate some help or hints whats happened
kind regards
Grubhart