Consulta en Hibernate con Clave foránea
Hola compañero, verás estoy intentando hacer una consulta SQL en hibernate, pero me da error y he probado varias formas y me sigue dando error. Te explico:
Tengo estas 2 clases:
public class Address {
Integer addressId;
String city;
Customer customer;
//getters y setters...
}
public class Customer {
Integer customerId;
String name;
Address address;
//getters y setters...
}
Address.hbm.xml:
<?xml version=”1.0??>
<hibernate-mapping>
<class name=”entities.Address” table=”ADDRESS”>
<id column="address_id" name="addressId">
<generator class="identity"/>
</id>
<property name=”city”>
<column name=”city” />
</property>
</property>
</class>
</hibernate-mapping>
Customer.hbm.xml:
<?xml version=”1.0??>
<hibernate-mapping>
<class name=”entities.Customer” table=”CUSTOMER”>
<id column="customer_id" name="customerId">
<generator class="identity"/>
</id>
<property name=”name”>
<column name=”NAME” /></property>
<many-to-one name=”address” column=”address_id” cascade=”all” unique=”true”/>
</class>
</hibernate-mapping>
Aquí la clase de prueba:
Customer customer = new Customer();
customer.setName(“Alex”);
Address address = new Address();
address.setCity(“Madrid”);
customer.setAddress(address);
address.setCustomer(customer);
session.save(customer);
public void elementos(Integer id){
Query query = session.createQuery(“from Customer customer where address_id=?”);
for(Iterator it=query.iterate();it.hasNext();){
Customer customer1 = (Customer) it.next();
Address address1 = customer1.getAddress();
System.out.println(“customer ID: ” + customer1.getCustomerId());
System.out.println(“address ID: ” + address1.getAddressId());
}
System.out.println(this.elementos(1));
}
Pues bien, cuando lo ejecuto me da fallo, es este:
Error en elementos: org.hibernate.QueryException: Expected positional parameter count: 1, actual parameters: [] [from Customer customer where address_id=?]
Lo más importante de todo es el fallo, puse todas las clases las puse para orientarte, pero lo que pasa es que la consulta está mal formulada y por eso Hibernate da fallo, pero no sé qué está mal en la consulta para que arroje ese fallo. Yo creo que el fallo está a partir del where...
Espero que me puedas ayudar.
Un saludo y muchas gracias.