【发布时间】:2023-03-13 00:11:02
【问题描述】:
表格
table_supplier_bills - bill_id, supplier_id, date
型号
@Entity
@Table(name = "table_supplier_bills")
public class SupplierBill {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="bill_id")
private Integer billId;
@Column(name="supplier_id")
private Integer supplierId;
@Column(name="date")
private String date;
@Column(name="bill_amount")
@Transient
private BigDecimal billAmount;
@Column(name="paid_amount")
@Transient
private BigDecimal paidAmount;
public SupplierBill() {
super();
}
public Integer getBillId() {
return billId;
}
public void setBillId(Integer billId) {
this.billId = billId;
}
public Integer getSupplierId() {
return supplierId;
}
public void setSupplierId(Integer supplierId) {
this.supplierId = supplierId;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public BigDecimal getBillAmount() {
return billAmount;
}
public void setBillAmount(BigDecimal billAmount) {
this.billAmount = billAmount;
}
public BigDecimal getPaidAmount() {
return paidAmount;
}
public void setPaidAmount(BigDecimal paidAmount) {
this.paidAmount = paidAmount;
}
]
存储库
@Query(value = "SELECT SB.bill_id, SB.date, SB.supplier_id, SUM(SBD.quantity * SBD.rate) as bill_amount, COALESCE((SELECT SUM(SBPD.payment_amount) FROM table_supplier_bill_payment_details SBPD WHERE SBD.bill_id = SBPD.bill_id ),0.00) as paid_amount from table_supplier_bills SB INNER JOIN table_supplier_bill_details SBD ON SB.bill_id = SBD.bill_id WHERE SB.supplier_id = ?1 group by SBD.bill_id ORDER BY SB.bill_id DESC" , nativeQuery = true)
List<SupplierBill> getSupplierBills(Integer sid);
当我调用上述方法时,我没有从服务中获得 bill_amount 和paid_amount。如果我删除 @Transient 它可以工作,但我无法调用
supplierBillRepository.save(supplierBill);
因为它抱怨未知列 bill_amount 和paid_amount。
我需要做哪些改变,所以它适用于这两种方法?
【问题讨论】:
-
你的意思是那些没有持久化的字段(标有
@Transient)?你很惊讶它没有在数据存储中找到它们?
标签: spring-mvc jpa spring-boot