我有两个bean类,分别为User和UserImages:
public class User implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
Long id;
@NotNull
String userName;
....
....
@OneToMany(fetch=FetchType.LAZY,mappedBy="user")
private List<UserImages> userImages ;
}
public class UserImages {
@Id
@GeneratedValue
long id;
@Column(name="user_id" , insertable=false , updatable=false)
Long userId;
@Column(name="pic_url")
String picUrl;
....
....
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="user_id")
private User user;
}
我正在通过条件应用休眠联接,但是得到的结果是重复的。
当前方案
例如:如果我有一个用户拥有5张图像,那么在这种情况下,我将为同一用户获得5个对象,即我根据图像数量获得了用户对象。 我使用的标准是:
public List<User> getUsers(Session session) {
Criteria parentCriteria = session.createCriteria(User.class);
Criteria secondChildCriteria = parentCriteria.createCriteria("userImages", JoinType.LEFT_OUTER_JOIN);
List<User> searchResults = (ArrayList<User>) parentCriteria.list();
return searchResults;
}
所需方案
例如:如果我有一个用户拥有5张图像,那么在这种情况下,我希望一个用户拥有全部5张图像。
我在User和UserImages中也有很多列,我想获取Users和UserImages的所有列数据。
那么如何通过休眠标准获取单个用户的所有图像?
谢谢