簡體   English   中英

如何在 spring 引導中將多個數據保存到數據庫

[英]How to save multiple data to database in spring boot

我嘗試使用 for 循環將多個數據保存到數據庫,但數據庫只顯示最后一個值。 我無法弄清楚哪個部分是錯誤的。

這是我的 model

@Entity
@Table(name="receipt_details")
public class ReceiptDetails {

@Id
@Column(name="id")
private int id;

@Column(name="ordered_food")
private String ordered_food;

@Column(name="quantity")
private int quantity;

@Column(name="price")
private double price;

存儲庫

import org.springframework.data.jpa.repository.JpaRepository;

import com.example.fyp6.model.ReceiptDetails;

public interface ReceiptDetailsRepository extends JpaRepository<ReceiptDetails, Integer> {

}

服務

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.example.fyp6.model.ReceiptDetails;
import com.example.fyp6.repo.ReceiptDetailsRepository;

@Service
public class ReceiptDetailsServiceImpl implements ReceiptDetailsService {

@Autowired
private ReceiptDetailsRepository receiptDetailsRepo;

@Override
public ReceiptDetails save(ReceiptDetails receiptDetails) {
    return receiptDetailsRepo.save(receiptDetails);
}

}

Controller

//Save invoice details
List<Item> cart = (List<Item>) session.getAttribute("cart");    
for(Item item : cart) {
ReceiptDetails receiptDetails = new ReceiptDetails(); 
receiptDetails.setId(receipt.getReceipt_id());
receiptDetails.setPrice(item.getFood().getFood_price());
receiptDetails.setQuantity(item.getQuantity());
receiptDetails.setOrdered_food(item.getFood().getFood_name());
receiptDetailsService.save(receiptDetails);
}

我無法弄清楚哪個部分是錯誤的。

receiptDetails.setId(receipt.getReceipt_id());

這是問題所在。 您保存具有相同 ID 的所有實體。 因此數據庫中只顯示了 1 個

同意布格的回答。 嘗試使用自動生成的值來填充您的主鍵。 或者使用復合鍵使您的記錄獨一無二。

PS:您可以使用 saveAll() 代替 save()。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM