我需要存儲customer
的當前選擇的payment
信息,以便此信息可用於處理購買。客戶可以有許多信用卡。因此,我將其模型化爲OneToMany
我懷疑將當前選定的付款信息存儲爲不同的字段(如下所示)。並排存在Set<Payment>
和Payment
的字段,看起來不太正確。在客戶類別中存儲當前選定的付款信息
有沒有更好的方式來做到這一點?可能是用一些標誌來標記,這是當前選擇的卡信息
@Entity
class Customer{
...
@OneToMany(cascade=CascadeType.ALL,orphanRemoval=true)
Set<Payment> payments;
Payment currentlySelectedPayment;//?
}
@Entity
@Table([email protected](columnNames={"cardType","cardNumber"}))
public class Payment{
...
String cardType;
String cardNumber;
String nameOnCard;
...
Date dateOfExpiry;//day,month,year of expiry
}
我實現了業務邏輯
void addNewCard(...){
Payment payment = get_from_db_or_create_new_payment(...);
if(!customer.getPayments().contains(payment)){
customer.getPayments().add(payment);
}
...
}
void setCurrentlySelectedPaymentForCustomer(Long paymentId,..){
Payment payment = getPaymentFromDB(paymentId);
if(!customer.getCurrentlySelectedPayment().equals(payment)){
customer.setCurrentlySelectedPayment(payment);
}
...
}