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
相关产品推荐
相关产品推荐

