【发布时间】:2011-08-01 05:33:35
【问题描述】:
我正在做一个查询,我需要找回一个用户,其中也填充了 UserConnectors。我的查询不断返回两个结果,而不是单个 ID 的一个结果。这应该是一个结果,但我认为 UserConnector 加入,因为用户有两个,在结果中创建两个用户,每个用户连接器一个。
表格
用户:ID NAME 用户连接器:ID、用户ID、日期
用户.java
@OneToMany(mappedBy="user")
public Set<UserConnector> getUserConnectors() {
return this.userConnectors;
}
/**
* Set the list of Connectors
*/
public void setUserConnectors(Set<UserConnector> userConnectors) {
this.userConnectors = userConnectors;
}
UserConnector.java
@ManyToOne
@JoinColumn(name = "USERID")
public User getUser() {
return this.user;
}
/**
* set users
*/
public void setUser(User user) {
this.user = user;
}
查询
Criteria criteria = userRepository.getCritieria();
criteria.createAlias("userConnectors", "uc", Criteria.LEFT_JOIN);
criteria.add(Restrictions.eq("id", request.getId()));
criteria.add(Restrictions.eq("enabled", new Long("1")));
criteria.add(Restrictions.eq("uc.active", new Long("1")));
List<User> list = userRepository.findByCriteria(criteria);
【问题讨论】:
标签: hibernate criteria one-to-many