gpt4 book ai didi

java - 如何使用 Hibernate 获取关联的实体

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:15:15 25 4
gpt4 key购买 nike

我正在使用 Spring rest 和 Hibernate 开发一个应用程序,我想从数据库中获取嵌套记录,就像我正在获取 UserProfession,现在我想获取与我之前获取的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com