阅读量:5
在 Hibernate 中进行联表查询可以使用 HQL(Hibernate Query Language)、Criteria 查询、Criteria API 或者 SQL 查询。
- 使用 HQL 进行联表查询:
String hql = "SELECT e FROM Entity1 e JOIN e.entity2 e2 WHERE e2.property = :value"; Query query = session.createQuery(hql); query.setParameter("value", value); List<Entity1> results = query.list();
- 使用 Criteria 进行联表查询:
Criteria criteria = session.createCriteria(Entity1.class); criteria.createAlias("entity2", "e2"); criteria.add(Restrictions.eq("e2.property", value)); List<Entity1> results = criteria.list();
- 使用 Criteria API 进行联表查询:
CriteriaBuilder cb = session.getCriteriaBuilder(); CriteriaQuery<Entity1> query = cb.createQuery(Entity1.class); Root<Entity1> root = query.from(Entity1.class); Join<Entity1, Entity2> join = root.join("entity2"); query.select(root).where(cb.equal(join.get("property"), value)); List<Entity1> results = session.createQuery(query).getResultList();
- 使用 SQL 查询进行联表查询:
String sql = "SELECT e.* FROM entity1 e JOIN entity2 e2 ON e.entity2_id = e2.id WHERE e2.property = :value"; SQLQuery query = session.createSQLQuery(sql); query.addEntity(Entity1.class); query.setParameter("value", value); List<Entity1> results = query.list();
以上是在 Hibernate 中进行联表查询的几种常用方法,根据具体需求和习惯选择合适的方法来进行查询。