Java JPA一对多更新失败

Java JPA一对多更新失败,java,hibernate,jpa,Java,Hibernate,Jpa,更新引发异常org.hibernate.LazyInitializationException:未能延迟初始化角色集合: 任何关于如何解决这个问题的想法都可以更新,其中子元素将包含一个新的和现有的元素 谢谢。对于初学者,您的mappedBy=“businessunit”需要参考另一侧的属性名称,在本例中为post 如果您仍然看到异常,您可以查看。(此异常有多种原因。) 最后,还有一个小问题,您不需要显式地标记fetch=FetchType.LAZY,因为这是默认设置。您可以删除此选项以提高可读性

更新引发异常org.hibernate.LazyInitializationException:未能延迟初始化角色集合:

任何关于如何解决这个问题的想法都可以更新,其中子元素将包含一个新的和现有的元素


谢谢。

对于初学者,您的
mappedBy=“businessunit”
需要参考另一侧的属性名称,在本例中为
post

如果您仍然看到异常,您可以查看。(此异常有多种原因。)


最后,还有一个小问题,您不需要显式地标记
fetch=FetchType.LAZY
,因为这是默认设置。您可以删除此选项以提高可读性。

我找到了解决方案。更新是在事务下执行的,运行得很好。在事务之外,我访问db模型子对象以转换为ui模型。这就是异常的原因,我也不需要访问子元素,所以最终我删除了它。

感谢bphilipnyc指出,这是一个编辑错误。
@Entity
public class Post {

private Set<Comment> comments = new LinkedHashSet<Comment>();

@OneToMany(mappedBy = "businessunit", fetch = FetchType.LAZY, cascade = { CascadeType.ALL }, orphanRemoval = true)
public Set<Comment> getComments() {
  return comments;
}
} 

@Entity
public class Comment {

private Post Post;
private BUnit bUnit;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "POST_ID", referencedColumnName = "ID")
public Post getPost() {
    return post;
}

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "BU_ID", referencedColumnName = "ID")
public BUnit getBUnit() {
    return bUnit;
}
}
post.getComments().clear();
post.getComments().addAll(newComments);
dao.update(post);