在@OneToMany SpringBoot上返回一个空列表 - Hibernate

时间:2018-04-22 10:28:54

标签: spring hibernate spring-boot

在hibernate中使用关系时,我得到null。 这是我的代码 用户实体

@Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private long userId;


    @OneToMany(mappedBy="user",targetEntity=LoginHistory.class, fetch=FetchType.LAZY,cascade = CascadeType.ALL)
    private List<LoginHistory> loginHistory = new ArrayList<LoginHistory>();

LoginHistory实体

@Entity
@Table(name = "login_history")
public class LoginHistory {

    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private long id;

    @ManyToOne(cascade = CascadeType.DETACH)
    @JoinColumn(name="userId",referencedColumnName="id")
    private User user;

获取登录历史记录详细信息

@Override
    public List<LoginHistory> getLoginHistory(User user) {
        List<LoginHistory> lst = user.getLoginHistory();
        return lst;
    }

我得到一个空列表。请帮忙

1 个答案:

答案 0 :(得分:0)

它正在设计,因为您正在访问一个延迟加载的实体。如果您继续保持延迟加载,请使用下面的代码来获取登录历史记录。

 User user = getByKey(id);
            if(user!=null){
                Hibernate.initialize(user.getUserProfiles());
            }