我正在做一個查詢,我需要找回用戶,也有用戶連接器填充它。我的查詢不斷爲一個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