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));