gpt4 book ai didi

java - 与 JoinTable 的 OneToMany 关联返回 null

转载 作者:行者123 更新时间:2023-12-01 15:23:07 25 4
gpt4 key购买 nike

简而言之:一个用户有许多“非客户端”(这些是用户无法服务的客户端)。用户通过连接表关联到多个客户端。

用户类别:https://gist.github.com/dd99690fcaaba2c834d6

客户端类:https://gist.github.com/10de71bcd1914ded5fb9

DAO:https://gist.github.com/dd4a369d60a05460d0c0

User 中的“notClients”属性始终为空,任何人都可以帮助我理解为什么吗?

最佳答案

简而言之,因为您没有将其包含在选择查询中。不确定为什么要编写 SQL 查询并使用 bean 转换器?这是一种非常奇怪的使用 hibernate 的方式。最后,这意味着您返回的不是 hibernate 托管实体。它只是一个对象,其中映射了您选择的特定内容。

使用 hibernate 的“正常”/“正确”方法是这样的:

private User getUser(int id, String userType)
{
User result;

session = HibernateUtil.getWilsonsSessionFactory().getCurrentSession();
session.beginTransaction();

Query query = session.createQuery("select u from User u
where u.id = :id and u.role = :role");
query.setParameter("id", id);
query.setParameter("role", userType);

result = (User)query.uniqueResult();

session.getTransaction().commit();

return result;
}

然后您将得到一个 Hibernate 实体,该实体将填充其所有映射属性。

(个人也不会以这种方式使用 uniqueResult,但我愿意承认这很大程度上是一种风格偏好。)

关于java - 与 JoinTable 的 OneToMany 关联返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10575704/

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