gpt4 book ai didi

JPA 潜在的同步问题

转载 作者:行者123 更新时间:2023-12-02 04:46:09 25 4
gpt4 key购买 nike

在我的寄宿类里,我有

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "lodger", orphanRemoval=true)
// @JsonBackReference
private List<RoomPayment> roomPaymentList;

在我的 RoomPayment 类中有

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "lodger_id")
private Lodger lodger;

其实我有

@Override
public Long save(RoomPaymentDto roomPaymentDto) {

RoomPayment roomPayment;

if (roomPaymentDto.getRoomPaymentId() != null) {
roomPayment = repository.findOne(roomPaymentDto.getRoomPaymentId());
} else {
roomPayment = new RoomPayment();
}

MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
mapperFactory.classMap(RoomPayment.class, RoomPaymentDto.class).byDefault().register();

MapperFacade mapper = mapperFactory.getMapperFacade();

mapper.map(roomPaymentDto, roomPayment);

repository.save(roomPayment);

return roomPayment.getRoomPayementId();
}

在这个方法中,我需要获取 Lodger 并将其分配给 roomPayment 吗?

最佳答案

不,当然,如果 dto 包含正确的 Lodger

重点是没有从 RoomPayment 到关联的 Lodger 的级联,这意味着当您保存 roomPayment 时,Hibernate 不会提示分离的对象

Hibernate 只会从 lodger 实例中获取 id,它将用于维护关联(因为 RoomPayment 是关联的所有者)。

关于JPA 潜在的同步问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32652915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com