我正在创建一个应用程序,人们可以发布评论或文章,用户可以评价文章是否对他们有帮助。
我目前有两个实体看起来像这样(省略了非相关细节):
Article.java
@Entity
Article
@Id
private int article_id
@ManyToOne
@JoinColumn(name="user_id")
private User user;
User.java
@Entity
User
@Id
private int user_id
我想知道一个用户是否对某篇文章进行了“投票”有两个原因,1。不让他们投票两次,2。建议其他可能有帮助的文章。
我在每个对象中尝试了@OneToMany
关系,并在文章和用户中使用Cascade选项进行每个引用来更新我称为User_Article
的对象(只有两列,article_id和user_id)但是,当级联发生时,我一直得到LazyInitilizationException
?
我正在寻找任何hibernate专家来指导这个问题的实现和架构。
答案 0 :(得分:1)
尝试
@OneToMany(fetch=FetchType.EAGER)
但是,避免急切加载大型集合是件好事。这就是为什么让它变得懒惰,只有在你确定需要时才使用Hibernate.initialize(..)
初始化它。或者使用如下的HQL查询:
SELECT entity FROM Entity entity JOIN entity.collection