Hibernate query a foreign key field with ID

Hibernate “nicely wraps” only what you tell it to wrap. So, assuming that your Employee mapping looks something like:

@Entity
public class Employee {
  ...
  @ManyToOne
  @JoinColumn(name="address_id")
  private Address address;
  ...
}

and your Address has an id property, you can query based on address_id via:

session.createCriteria(Employee.class)
 .add(Restrictions.eq("address.id", addressId));

In order to query based on Address properties, you’ll have to create aliases or nested criteria:

session.createCriteria(Employee.class)
 .createAlias("address", "a")
 .add(Restrictions.eq("a.postalCode", postalCode));

Leave a Comment