2011-09-22 52 views
1

在CustomerTransactions实体,我有以下字段来记录客户买了什么:我应该如何实现事务数据库EJB 3.0

@ManyToMany 
private List<Item> listOfItemsBought; 

当我想详细了解此领域,有一个机会,它可能无法正常工作因为商家被允许改变商品的信息(例如价格,折扣等)。因此,此字段将无法记录客户在交易发生时实际购买的内容。

目前,我只能想到2种方法使其工作。

  1. 我会记录交易细节到一个字符串字段。我觉得如果我以后需要提取关于交易的一些信息,这种方式会很麻烦。
  2. 每当商家更改商品信息时,我都不会直接更新到商品的字段。相反,我会用所有新信息创建另一个新项目,并保持旧项目不变。我觉得这种方式更好,因为我以后可以轻松提取有关交易的信息。然而,坏的一面是我的Item表可能包含很多行。

如果有人能给我一个关于如何解决这个问题的建议,我将不胜感激。

回答

1

我会尝试第三个选项是这样的。

public class Item { 
    private String sku; 

    private double currentPrice; 
} 

public class Customer { 
    private String name; 

    private List<Transaction> transactions; 
} 

public class Transaction { 
    private Item item; 

    private Customer customer; 

    private double pricePerItem; 

    private double quantity; 

    private String discountCode; 
} 

我会留给你制定出JPA映射。

+0

感谢您的建议!我有强烈的感觉,它会很好地工作:D –

+0

不客气。 :-) –

相关问题