简而言之:一个用户有很多“非客户”(这些是用户无法服务的客户)。用户通过连接表关联到多个客户端。
用户类:https ://gist.github.com/dd99690fcaaba2c834d6
客户端类:https ://gist.github.com/10de71bcd1914ded5fb9
DAO:https ://gist.github.com/dd4a369d60a05460d0c0
User 中的“notClients”属性始终为空,谁能帮我理解为什么?
简而言之:一个用户有很多“非客户”(这些是用户无法服务的客户)。用户通过连接表关联到多个客户端。
用户类:https ://gist.github.com/dd99690fcaaba2c834d6
客户端类:https ://gist.github.com/10de71bcd1914ded5fb9
DAO:https ://gist.github.com/dd4a369d60a05460d0c0
User 中的“notClients”属性始终为空,谁能帮我理解为什么?
简而言之,因为您没有将其包含在您的选择查询中。不确定为什么要编写 SQL 查询并使用 bean 转换器?这是使用休眠的一种非常奇怪的方式。最后,这意味着您得到的不是休眠托管实体。它只是一个对象,您选择的特定内容映射到它上面。
使用休眠的“正常”/“正确”方式是这样的:
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,但我愿意承认这在很大程度上是一种风格偏好。)