package book.example.persistence.model; import javax.persistence.Entity; import javax.persistence.ManyToOne; import java.util.Date; import static javax.persistence.CascadeType.PERSIST; import static javax.persistence.FetchType.EAGER; @Entity public class CreditCardDetails extends PaymentMethod { private String cardNumber; private String nameOnCard; private Date expiryDate; @ManyToOne(cascade = PERSIST, fetch = EAGER, optional = false) private Address billingAddress; public CreditCardDetails(String cardNumber, String nameOnCard, Date expiryDate, Address billingAddress) { this.cardNumber = cardNumber; this.nameOnCard = nameOnCard; this.expiryDate = expiryDate; this.billingAddress = billingAddress; } public Date getExpiryDate() { return expiryDate; } public String getCardNumber() { return cardNumber; } public String getNameOnCard() { return nameOnCard; } public Address getBillingAddress() { return billingAddress; } protected CreditCardDetails() { // for JPA } }