我正在使用 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();