我正在尝试为我的客户报价需求创建数据库解决方案。我必须读取一个文件并将数据存储在大多数相互关联的多个表中。
我已经创建了实体类及其关联,如下所示。但是使用当前的方法,我看到了一个问题,即将优惠从优惠券扩展到奖励。如果我为奖励创建另一个实体,则需要更新我的CustomerEntity
类,并与新实体添加另一个@OneToMany
关联。
@Entity(name = "METADATA")
public class MetadataEntity {
Metadata Id
Offer description
//Setters & Getters
}
@Entity(name = "CUSTOMER")
public class CustomerEntity {
Customer Id
Customer Name
CouponEntity (OneToMany - Join column Coupon Code)
//Setters & Getters
}
@Entity(name = "PROFILE")
public class ProfileEntity {
Profile Id
CustomerEntity (OneToOne - Join Column Customer Id)
//Setters & Getters
}
@Entity(name = "COUPON")
public class CouponEntity {
Coupon Code
Amount
Expiry
//Setters & Getters
}
@Entity(name = "OFFER")
public class OfferEntity{
Id
MetadataEntity(ManyToOne - Join column Metadata Id)
ProfileEntity(ManyToOne - Join column Profile Id)
//Setters & Getters
}
从我的DAO类中,我正在使用与Offer关联的OfferRepository
类。
@Repository
public interface OfferRepository extends JpaRepository<OfferEntity, String> {}
@Autowired
OfferRepository offerRepo;
public class DaoImpl {
createOffer(OfferEntity offer){
offerRepo.save(offer);
}
readOffers(){
offersList = offerRepo.findAll();
for-each offer:offersList {
//access all customer information & offer information (could be a coupon or rewards)
offer.getProfile().getCustomer().getCoupons();
}
}
}
我正在尝试确定一种解决方案,如果要扩展“优惠”,则不需要更新任何现有实体类。
答案 0 :(得分:0)
我建议您为Coupon和Rewards创建一个基类。我们称它为Benefit。
然后可以将其用作Customer类中的关系。
然后,客户类可能有一种方法来获取优惠券或奖励,具体取决于您传递给该方法的类对象,例如:
T List<T> getBenefits(Class<T> type)