For example, I have two entities: Employee and Address. Of these enitities, Employee has a foreign key AddressID references the ID column on Address. In the Java domain obje
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));
Having similar trouble... @ChssPly76 answer works fine, but just found solution if foreign key is not part of Id in parent table - you must modify annotation by adding "referencedColumnName":
@ManyToOne
@JoinColumn(name="address_id", referencedColumnName="addrUniqueFieldName")
private Address address;
and then you can create criteria:
criteria.add(restriction.eq("address.addrUniqueFieldName", 123);