我正在使用 Spring rest 和 Hibernate 开发一个应用程序,我想从数据库中获取嵌套记录,就像我正在获取 User
的 Profession
,现在我想获取与我之前获取的 Profession
关联的 Users
。
这是我的 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
表格应该有一个专业的 FK。
因此 Users
表将与 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();
关于java - 如何使用 Hibernate 获取关联的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31310852/