【发布时间】:2021-07-14 04:55:19
【问题描述】:
我在使用 modelmapper 使用 @OneToOne 执行父子实体更新时遇到问题。
说明如下
父类:
@Data
@Entity
@Table (name = "site")
public class Site {
@Id
@JsonIgnore
@Column(name = "internal_id")
private long internalId;
@Column(name = "internal_uuid")
private String internalUUID;
@OneToOne(mappedBy = "site", cascade = CascadeType.ALL)
private Address address;
// Some other stuff
}
儿童班:
@Data
@Entity
@Table(name = "address")
public class Address {
@Id
@JsonIgnore
@Column(name = "internal_id")
private Long internalId;
@JsonIgnore
@OneToOne
@JoinColumn(name = "site_uuid", referencedColumnName = "internal_uuid")
private Site site;
// Some other stuff
}
通过这种安排,我能够成功地创建和查询站点 + 地址组合。但是,我在进行更新时遇到了问题。我正在尝试使用 modelmapper 语句更新站点或地址,如下所示:
modelmapper.map(site_from_request, site_existing_in_db);
期望在传入站点(即 site_from_request)中更改的所有字段都应替换 site_existing_in_db 中的现有字段。但是,我从 modelmapper 收到 Stackoverflow 错误。
有没有一种方法可以指示模型映射器跳过站点的字段映射(在地址下)?我遇到的所有示例都指向跳过父类本身(即站点)下的字段,而不是地址。 我已经尝试过诸如 BeanUtils.copyProperties(由 Spring 提供)之类的替代方法,但我也没有看到跳过属于孩子的字段的选项。
非常感谢, 普拉巴尔
【问题讨论】:
标签: java spring-data-jpa modelmapper