【发布时间】:2018-05-29 21:50:58
【问题描述】:
我想将工作人员存储在一个组织对象中,为此,我有一个组织类,为工作人员提供一对多映射。
@OneToMany(cascade=CascadeType.ALL,fetch = FetchType.EAGER)
@JoinTable(name = "ORGANIZATION_WORKER", joinColumns = { @JoinColumn(name = "orgIdPK") }, inverseJoinColumns = { @JoinColumn(name = "id") })
public Set<Worker> workerList;
“ORGANIZATION_WORKER 是一个保存映射的临时表”
然后我有一个 Worker 类,其中我有如下多对一映射。
@ManyToOne(cascade=CascadeType.ALL,fetch = FetchType.LAZY)
@JoinColumn(name = "orgIdPK")
public Organization organization;
现在,当我使用休眠会话将工作人员插入组织后保存组织时,即
session.saveOrUpdate(org);
插入查询运行两次(N+1 期)。 `
Hibernate: insert into ORGANIZATION_WORKER (orgIdPK, id) values (?, ?)
Hibernate: insert into ORGANIZATION_WORKER (orgIdPK, id) values (?, ?)
因此,当我在 rest API 上公开组织数据时,所有记录都会显示两次,因为在 rest API 上分页出错。有谁知道如何解决这个问题?
【问题讨论】:
标签: java spring hibernate spring-data-jpa h2