Foros del Web » Programación para mayores de 30 ;) » Java »

Error en consulta SQL en Hibernate

Estas en el tema de Error en consulta SQL en Hibernate en el foro de Java en Foros del Web. Saludos, estuve intentando hacer una consulta en Hibernate, pero Hibernate me da fallo, os expongo un poco las clases: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código JAVA: Ver original ...
  #1 (permalink)  
Antiguo 05/11/2012, 12:25
 
Fecha de Ingreso: noviembre-2012
Mensajes: 8
Antigüedad: 12 años
Puntos: 0
Error en consulta SQL en Hibernate

Saludos, estuve intentando hacer una consulta en Hibernate, pero Hibernate me da fallo, os expongo un poco las clases:


Código JAVA:
Ver original
  1. public class Address {
  2.  
  3.      Integer addressId;
  4.      String city;
  5.      Customer customer;
  6.  
  7.      //getters y setters...
  8.     }


Código JAVA:
Ver original
  1. public class Customer {
  2.     Integer customerId;
  3.     String name;
  4.     Address address;
  5.  
  6. //getters y setters...
  7. }


Address.hbm.xml:

Código XML:
Ver original
  1. <hibernate-mapping>
  2.   <class name=”entities.Address” table=”ADDRESS”>
  3.    
  4.   <id column="address_id" name="addressId">  
  5.      <generator class="identity"/>  
  6.    </id>
  7.  
  8.     <property name=”city”>
  9.      <column name=”city” />
  10.     </property>
  11.    
  12.   </class>
  13. </hibernate-mapping>



Customer.hbm.xml:

Código XML:
Ver original
  1. <hibernate-mapping>
  2.   <class name=”entities.Customer” table=”CUSTOMER”>
  3.  
  4.  <id column="customer_id" name="customerId">  
  5.      <generator class="identity"/>  
  6.    </id>
  7.  
  8.   <property name=”name”>
  9.      <column name=”NAME” />
  10.     </property>
  11.    
  12.     <many-to-one name=”address” column=”address_id” cascade=”all”  unique=”true” />
  13.   </class>
  14. </hibernate-mapping>


Código JAVA:
Ver original
  1. Customer customer = new Customer();
  2.          customer.setName("Alex");
  3.  
  4.          Address address = new Address();
  5.          address.setCity("Madrid");
  6.        
  7.          customer.setAddress(address);
  8.          address.setCustomer(customer);
  9.          session.save(customer);
  10.  
  11.    //fetch all customers
  12.  
  13. public void elementos(Integer id){
  14.             Query query = session.createQuery("from Customer customer where address_id=?");
  15.             for(Iterator it=query.iterate();it.hasNext();){
  16.              Customer customer1 = (Customer) it.next();
  17.              Address address1 = customer1.getAddress();
  18.                 System.out.println("customer ID: " + customer1.getCustomerId());
  19.                 System.out.println("address ID: " +address1.getAddressId());
  20.               }
  21.  
  22. }
  23.  
  24.         System.out.println(this.elementos(1));
  25.  
  26. }




Este es el fallo que me da: Error en elementos: org.hibernate.QueryException: Expected positional parameter count: 1, actual parameters: [] [from Customer customer where address_id=?]


Os puse las clases y demás para orientaros, el fallo está en la sintaxis de la consulta SQL, supongo que a partir del where en adelante, de ahí vendrá el fallo, pero no sé cómo ponerlo para que sea correcto.

Aquí está el fallo: Query query = session.createQuery("from Customer customer where address_id=?");

A ver si me podeis ayudar.

Un saludo y muchas gracias de antemano.

Última edición por progxt; 05/11/2012 a las 12:30
  #2 (permalink)  
Antiguo 06/11/2012, 02:58
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 16 años, 2 meses
Puntos: 188
Respuesta: Error en consulta SQL en Hibernate

Query query = session.createQuery(" from Customer customer where customer.addressId = :tuVariable ");
query.setParameter(tuVariable,id);
//Luego ejecutarás la query supongo
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}

Etiquetas: clase, hibernate, sql, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:31.