使用休眠联接获取重复记录

时间:2018-08-18 07:25:04

标签: hibernate join hibernate-criteria

我有两个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的所有列数据。

那么如何通过休眠标准获取单个用户的所有图像?

谢谢

0 个答案:

没有答案