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.

Añade tu respuesta

Haz clic para o