gpt4 book ai didi

java - 获取特定列表后,Spring Jpa 删除操作不起作用

转载 作者:搜寻专家 更新时间:2023-11-01 03:31:27 24 4
gpt4 key购买 nike

这些是我的实体;

@Entity
public class IpAddress{

@Id
@Column(nullable = false, updatable = false)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ")
@Getter
private Long id;

@ManyToOne(fetch = FetchType.LAZY)
private final Application application;

.....
}

@Entity
public class Application{

@Column(nullable = false, updatable = false)
private final String applicationId;

@OneToMany(mappedBy = "application", cascade = CascadeType.ALL, orphanRemoval = true)
private List<IpAddress> ipAddresses = new ArrayList<>();
}

@Entity
public class MerchantApplication {

@Id
@Column(nullable = false, updatable = false)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ")
@Getter
private Long id;
@OneToOne
private final Merchant merchant;

@OneToOne(cascade = CascadeType.ALL)
private final Application application;

@ManyToOne(fetch = FetchType.LAZY)
private final User user;
}

这是我尝试删除的服务方法:

@Transactional
public void deleteIpAddressForMerchant(Long merchantId,Long ipAddressId) {

Merchant merchant = merchantRepository.getMerchant(merchantId);

MerchantApplication merchantApplication = merchant.getMerchantApplication();

if (Objects.isNull(merchantApplication))
throw new ApplicationNotFoundException();

if (merchantApplication.getApplication().getIpAddresses().size() == 1) {
throw new IpAddressCannotBeDeleted();
}

IpAddress ipAddress = ipAddressRepository.getByIdAndApplication(ipAddressId, merchantApplication.getApplication());
ipAddressRepository.delete(ipAddress);
}

当我在服务方法中删除这个 block 时,它工作正常;

if (merchantApplication.getApplication().getIpAddresses().size() == 1) {
throw new IpAddressCannotBeDeleted();
}

但是这样不行,你能帮帮我吗,有什么问题吗?

最佳答案

如果您在 @Transactional 方法中获取具有 orphanRemoval = true 属性的实体字段,它将在该方法返回时保存此字段以及您对其所做的更改。

在你的例子中,你获取

merchantApplication.getApplication().getIpAddresses()

但是你没有对它进行任何更改,然后将获取的列表原样保存。

您可以在获取的列表中删除您想要删除的元素。

关于java - 获取特定列表后,Spring Jpa 删除操作不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52425764/

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