gpt4 book ai didi

java - 无法计算表达式方法抛出 'org.hibernate.exception.GenericJDBCException' 异常

转载 作者:行者123 更新时间:2023-12-02 01:08:26 24 4
gpt4 key购买 nike

我的应用程序中有 2 个模型,它们具有一对多和多对一关系。

模型类是:

发票模型

@Entity
@Data
public class Invoice implements java.io.Serializable {
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid2")
private String id;

private String business;

private String client;

private String invoiceNo;

@Enumerated(EnumType.STRING)
private InvoiceStatus status;

private String additionalInfo;

@OneToMany(mappedBy = "invoice")
private Set<InvoiceItem> items = new HashSet<>();

@CreationTimestamp
private LocalDateTime createdAt;

@UpdateTimestamp
private LocalDateTime updatedAt;

private LocalDateTime deletedAt;
}

发票项目模型

@Entity
@Data
public class InvoiceItem {
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid2")
private String id;

@ManyToOne
@JoinColumn(name="invoice_id", nullable = false)
private Invoice invoice;

private String description;

@Enumerated(EnumType.STRING)
private InvoiceItemType type;

@CreationTimestamp
private LocalDateTime createdAt;

@UpdateTimestamp
private LocalDateTime updatedAt;

private LocalDateTime deletedAt;
}

我有一个 api 端点,用于为发票创建发票项目

@RestController
@RequestMapping(path="/api/v1/invoices/{invoice}/items")
public class InvoiceItemController {

@Autowired
private ModelMapper modelMapper;

@Autowired
private InvoiceItemService invoiceItemService;

@Autowired
private InvoiceService invoiceService;

@PostMapping
public ResponseEntity<InvoiceItem> addInvoiceItem(@PathVariable("invoice") String invoiceId, @RequestBody InvoiceItemCreationDto invoiceItemCreationDto) throws NotFoundException {

Optional<Invoice> invoiceOptional = invoiceService.findInvoiceById(invoiceId);

if (!invoiceOptional.isPresent()) {
throw new NotFoundException("Invoice not found");
}

InvoiceItem invoiceItem = modelMapper.map(invoiceItemCreationDto, InvoiceItem.class);
invoiceItem.setInvoice(invoiceOptional.get());

InvoiceItem savedInvoiceItem = invoiceItemService.addInvoiceItem(invoiceItem);
return new ResponseEntity<>(savedInvoiceItem, HttpStatus.CREATED);
}
}

发票服务

package com.spencerfeng.invoiceservice.services;

import com.spencerfeng.invoiceservice.models.Invoice;
import com.spencerfeng.invoiceservice.repositories.InvoiceRepository;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.Optional;

public class InvoiceServiceImpl implements InvoiceService {
@Autowired
InvoiceRepository invoiceRepository;

@Override
public Invoice addInvoice(Invoice invoice) {
return invoiceRepository.save(invoice);
}

@Override
public Optional<Invoice> findInvoiceById(String id) {
return invoiceRepository.findById(id);
}
}

发票存储库

package com.spencerfeng.invoiceservice.repositories;

import com.spencerfeng.invoiceservice.models.Invoice;
import org.springframework.data.repository.CrudRepository;

public interface InvoiceRepository extends CrudRepository<Invoice, String> {
}

发票项目服务

package com.spencerfeng.invoiceservice.services;

import com.spencerfeng.invoiceservice.models.InvoiceItem;
import com.spencerfeng.invoiceservice.repositories.InvoiceItemRepository;
import org.springframework.beans.factory.annotation.Autowired;

public class InvoiceItemServiceImpl implements InvoiceItemService {
@Autowired
private InvoiceItemRepository invoiceItemRepository;

@Override
public InvoiceItem addInvoiceItem(InvoiceItem invoiceItem) {
return invoiceItemRepository.save(invoiceItem);
}
}

但是,当我调用此 api 端点为发票创建发票项目时,invoiceOptional 中的 items 属性出现“无法评估表达式方法抛出 'org.hibernate.exception.GenericJDBCException' 异常,而其他属性都很好.

The screenshot of the issue

enter image description here

最佳答案

您可以尝试排除一个 POJO 上的循环 tostring\hashcode 引用:

@ToString(exclude = "invoice")
@EqualsAndHashCode(exclude = "invoice")
@Entity
@Getter @Setter
public class InvoiceItem {

或者通过在字段上使用 @EqualsAndHashCode.Exclude 和 @ToString.Exclude 来实现

@Entity
@Data
public class InvoiceItem {
@ManyToOne
@EqualsAndHashCode.Exclude @ToString.Exclude
@JoinColumn(name="invoice_id", nullable = false)
private Invoice invoice;

关于java - 无法计算表达式方法抛出 'org.hibernate.exception.GenericJDBCException' 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59724177/

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