我正在做一个查询,我需要找回用户,也有用户连接器填充它。我的查询不断为一个ID带回两个结果,而不是一个结果。它应该是一个结果,但我认为UserConnector加入是因为用户有两个用户连接,所以在结果中创建两个用户,每个用户连接一个。休眠查询不能正确投影在一对多
表
用户:ID NAME UserConnector:ID,USERID,DATE
User.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);
同一件事: 列表列表= userRepository.getCritieria() (Restrictions.idEq(request.getId())) \t \t个\t。新增(Restrictions.eq( “已启用”,新长征( “1”))) \t \t \t .createCriteria( “userConnectors”) \t \t \t。新增(Restrictions.like( “激活”,新长征(“1”))) \t \t \t .list(); –
2011-04-08 05:45:23