简而言之:用户有许多“非客户”(这些是用户无法提供的客户端)。用户通过连接表与多个客户端关联。
用户类:https://gist.github.com/dd99690fcaaba2c834d6
客户类:https://gist.github.com/10de71bcd1914ded5fb9
DAO:https://gist.github.com/dd4a369d60a05460d0c0
User中的“notClients”属性始终为null,任何人都可以帮我理解原因吗?
答案 0 :(得分:1)
简而言之,因为您没有将其包含在您的选择查询中。不确定为什么要编写SQL查询并使用bean转换器?这是使用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,但我愿意承认这主要是一种风格偏好。)