gpt4 book ai didi

java - Spring boot JPA获取一个列表并向其中添加一个项目会引发错误

转载 作者:行者123 更新时间:2023-12-04 09:34:52 24 4
gpt4 key购买 nike

我正在使用 JPA 并且我有一个名为 Order 的实体/类。我休息了GET通过 id 获取订单的端点。它工作得很好。订单实体如下所示:

@Entity
public class Order {

@Id
private Long id;

@Column
private List<String> transactionRefs;
}
现在,在一个特定场景中,我需要从数据库中获取订单并将另一项添加到 transactionRefs 并保存它。所以我做如下:
Order order = orderRepository.findById(1).get();
List<String> transactionList = order.getTransactionRefs();
transactionList.add("transaction-ref");
当我这样做时,我收到以下错误:
java.lang.UnsupportedOperationException: null\n\tat java.util.AbstractList.add(AbstractList.java:148)
如果我按照以下方式进行操作,则可以解决问题:
Order order = orderRepository.findById(1).get();
List<String> transactionList = order.getTransactionRefs();
transactionList = new ArrayList<>(transactionList);
transactionList.add("transaction-ref");
所以,我需要知道我在这里的方向是否正确,这是预期的错误情况。
更新:
每当我们向列表中添加一个项目时,我们有以下条件:
if (transactionRefs == null) {
transactionRefs = new ArrayList<>();
}
因此,每当第一次保存 transactionref 时,我们都会将其转换为 ArrayList。
更新2:
以下是 transactionRef 的 getter:
public List<String> getTransactionRefs(){
if (this.transactionRefs != null) {
return Arrays.asList(this.transactionRefs.split(","));
}
return null;
}

最佳答案

这是您异常的原因

return Arrays.asList(this.transactionRefs.split(","));
Arrays.asList 返回一个由数组支持的集合,不能用 add 修改。或 addAll .您需要像在问题中一样创建列表:
List<String> transactionList = order.getTransactionRefs();
transactionList = new ArrayList<>(transactionList);
更多示例:
  • How to add elements in List when used Arrays.asList()
  • Regarding immutable List (created by Arrays.asList())
  • 关于java - Spring boot JPA获取一个列表并向其中添加一个项目会引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62636093/

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