You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot添加交易时抛出NoSuchElementException问题求助

NoSuchElementException异常排查:新增客户后保存交易失败

我定义了Customer和Transaction两个实体类,Transaction类包含与Customer相同的custID字段,已实现所有Getter/Setter、Repository、Service及Controller。但在TransactionServiceImpl的addTransaction方法中抛出NoSuchElementException: No value present异常。

我清楚异常是因为查询对应custID的客户记录不存在,但代码并未进入预设的处理分支。当前逻辑是通过CustomerTransaction包装类传递客户和交易信息:若custID对应的客户已存在则仅保存交易(该分支工作正常),若不存在则先新增客户再保存交易,但此时会抛出异常。不过单独通过CustomerService添加客户是可以正常执行的。


实体类代码

Customer类

@Entity
@Table(name = "customers")
public class Customer {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int custID;
    private String custName;
    private String email;
    private String phone;
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
    private LocalDate registrationDate;

}

Transaction类

@Entity
@Table(name = "transactions")
public class Transaction {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int transID;
    private int custID;
    private int transAmount;
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
    private LocalDate transDate;

}

Service层代码

TransactionServiceImpl相关方法

@Override
public Transaction addTransaction(CustomerTransaction customerTransaction) {
    Customer customer = customerTransaction.getCustomer();
    Transaction transaction = customerTransaction.getTransaction();
    
    if(customerService.findCustomerByID(transaction.getCustID()) == null) {
        customerService.addCustomer(customer);
        return transactionRepository.save(transaction);
    } else{
        return transactionRepository.save(transaction);
    }
}

CustomerServiceImpl相关方法

@Override
public Customer addCustomer(Customer customer) {
    
    return customerRepository.save(customer);
}

Postman请求示例

仅添加客户

{
    "custName": "Bibek Bhattarai",
    "email": "spongebob@gmail.com",
    "phone": 9803064423,
    "registrationDate": "03-01-2023"
}

添加客户交易

{
    "customer":{
        "custName": "Sponge Bob",
        "email": "spongebob@gmail.com",
        "phone": 9803064423,
        "registrationDate": "03-01-2023"
    },
    "transaction":{
        "custID":9,
        "transAmount": 5000,
        "transDate": "04-01-2023"
    }
}

内容的提问来源于stack exchange,提问作者Bibek Bhattarai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 18:35:13