Java 休眠忽略即时加载

Java 休眠忽略即时加载,java,hibernate,lazy-loading,Java,Hibernate,Lazy Loading,我有一个classUser,带有以下字段rooms @ManyToMany(targetEntity=Room.class, fetch=FetchType.EAGER, cascade = CascadeType.ALL) @JoinTable(name="room_users", joinColumns={ @JoinColumn(name="user_id") }, inverseJoinColumns={ @JoinColumn(name=

我有一个class
User
,带有以下字段
rooms

@ManyToMany(targetEntity=Room.class, fetch=FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name="room_users",
            joinColumns={ @JoinColumn(name="user_id") },
            inverseJoinColumns={ @JoinColumn(name="room_id") })
@JsonIgnore
private List<Room> rooms = new ArrayList<>();
@ManyToMany(targetEntity=Room.class,fetch=FetchType.EAGER,cascade=CascadeType.ALL)
@JoinTable(name=“房间用户”,
joinColumns={@JoinColumn(name=“user_id”)},
inverseJoinColumns={@JoinColumn(name=“room_id”)})
@杰索尼奥雷
private List rooms=新建ArrayList();
在某个时刻,我想检查用户是否在房间里,如下所示

public ResponseEntity<?> joinRoom(@PathVariable Integer uid, @RequestHeader("Auth-Token") String token){
    try{
        User user = findByBackendToken(token, userRepository);
        Room room = roomRepository.findByUid(uid);

        if(user.getRooms().contains(room)){
            return new ResponseEntity<String>(HttpStatus.NOT_MODIFIED);
        } else {
            roomService.joinRoom(user, room);
        }
        return new ResponseEntity<String>(HttpStatus.OK);
    } catch(Exception e) {
        e.printStackTrace();
        return new ResponseEntity<String>(exception(e), HttpStatus.UNPROCESSABLE_ENTITY);
    }
}
public ResponseEntity joinRoom(@PathVariable整数uid、@RequestHeader(“身份验证令牌”)字符串令牌){
试一试{
User User=findByBackendToken(token,userRepository);
Room-Room=roomRepository.findByUid(uid);
if(user.getRooms().contains(room)){
返回新的响应属性(HttpStatus.NOT_MODIFIED);
}否则{
roomService.joinRoom(用户,房间);
}
返回新的响应状态(HttpStatus.OK);
}捕获(例外e){
e、 printStackTrace();
返回新的ResponseEntity(异常(e),HttpStatus.UNPROCESSABLE_实体);
}
}
但是我发现
未能延迟初始化角色集合:com.inkdrop.app.domain.models.User.rooms,无法初始化代理-行
User.getRooms()中没有会话
。包含


似乎Hibernate忽略了渴望的
。有什么问题吗?

您是否在事务会话中调用
getRooms
?没有……我想我应该这样做,对吗?但问题是,为什么即使是渴望的Hibernate也没有加载房间。这是预料中的吗?的确如此。这应该会导致hibernate对文件室进行额外的查询。我想这应该是关于hibernate代理的事情,但我还没有足够的知识给你一个正确/完整的答案。你能展示一下你是如何在方法
FindBackendToken
中查询
用户的吗?