我正在使用 Spring rest 和 Hibernate 开发一个应用程序,我想从数据库中获取嵌套记录,就像我为 Profession 获取 User 一样,现在我想获取与我之前获取的 Users 关联的 Profession

这是我的 Dao 课

@SuppressWarnings({ "unchecked", "rawtypes" })
public List<Profession> getProfessionById(long id) throws Exception {
    session = sessionFactory.openSession();
    Criteria cr = session.createCriteria(Profession.class);
    cr.add(Restrictions.eq("uid", id));
    List results = cr.list();
    tx = session.getTransaction();
    session.beginTransaction();
    tx.commit();
    return results;
}

最佳答案

根据您的查询,Profession 表有一个 uid 列,它可能是 Users 表的 FK,我认为 Users 表应该有一个 Profession 的 FK。

所以 Users 表将有一个 many-to-one 关联到 Profession :

@ManyToOne
private Profession profession;

并且 Profession 可以关联所有具有该特定职业的用户,因此在 Profession 实体中,您具有此关联的反面:
@OneToMany(mappedBy = "profession")
private List<Users> users = new ArrayList<>();

现在要让所有用户都拥有一个职业,您可以运行一个简单的查询,如下所示:
List<Users> users = (ist<Users>) session.createQuery(
    "select u " +
    "from Profession p " +
    "join fetch p.users u " +
    "where p.id = :id")
.setParameter("id", proffesionId)
.list();

10-06 05:38