【发布时间】:2021-07-14 22:25:28
【问题描述】:
使用 Spring Data 和 mysql 作为持久层在多对多映射中遇到一些问题
@Getter
@Setter
public class BusinessUnitEntitiy extends AbstractTenantEntity implements Auditable{
private static final long serialVersionUID = -1123383144979037984L;
@Column(name = "NAME")
String name;
@Column(name = "DESCRIPTION")
String description;
@ManyToMany(fetch = FetchType.LAZY,mappedBy = "businessUnits" )
private Set<User> businessUsers;
public Set<User> fetchBusinessUsers() {
return businessUsers;
}
@Column(name = "DISPLAY_SEQUENCE_NUM")
protected Long displaySequenceNum;
@Column(name = "UNIQUE_SEQUENCE_ID",unique = true)
protected String uniqueSequenceId;
}
@Getter
@Setter
public class User extends AbstractTenantEntity {
private static final long serialVersionUID = 65981149772133526L;
@Column(name = "PROVIDER_USER_ID")
private String providerUserId;
private String email;
@Column(name = "enabled", columnDefinition = "BIT", length = 1)
private boolean enabled;
@Column(name = "DISPLAY_NAME")
private String displayName;
private String password;
private String provider;
@Column(name = "DISPLAY_SEQUENCE_NUM")
protected Long displaySequenceNum;
@Column(name = "UNIQUE_SEQUENCE_ID",unique = true)
protected String uniqueSequenceId;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "business_unit_user",
joinColumns={@JoinColumn(name ="user_id")},
inverseJoinColumns = { @JoinColumn(name="business_unit_id") }
)
Set<BusinessUnitJpaEntitiy> businessUnits;
}
从 businessunit 获取用户效果很好
但是从用户那里获取 businessunits 会给出 null 集,即使更新同一个用户也只会保留新链接的 businessunit 旧值消失
【问题讨论】:
标签: mysql hibernate spring-data-jpa