我有product
和categories
的列表,需要知道每个用户是否已查看它们,还需要知道每个用户已查看的每个products
的category
总数。
简而言之,我需要保留以下内容的列表
每个用户?
我向
Client
类添加了两个成员变量,如下所示。我不确定它是否正确,其次,我不知道如何为每个用户查看每个类别的所有已查看产品的计数器。 (我知道我可以使用数据库的(COUNT)函数来检索它,但是我想知道是否还有其他有效的方法,而不是将此请求发送到数据库)。
客户:
@Entity
public class Client {
@Id
@GeneratedValue
private long id;
@OneToOne
private List<Product> viewedProducts = new ArrayList<Product>(); //keep list of viewed products
@OneToOne
private List<Category> viewedCategories = new ArrayList<Category>(); //keep list of viewed categories
....
}
产品
@Entity
public class Product {
@Id
@GeneratedValue
private long id;
@ManyToOne(cascade = CascadeType.ALL)
private Category category;
....
}
类别
@Entity
public class Category {
@Id
@GeneratedValue
private long id;
....
}
最佳答案
我的建议是保留您当前拥有的那些成员变量,并将以下内容添加到您的 class 中
@OneToMany
private List<ViewedProductsPerCategory> =
new ArrayList<ViewedProductsPerCategory>();
在那个班上你应该有
@Entity
public class ViewedProductsPerCategory {
@Id
@GeneratedValue
long id;
@OneToMany
Category category;
long CatCounter;
long ProCounter;
getters and setters;
}
但是请确保每次用户访问产品或类别时都将计数器保留在cookie中,而不是调用数据库。用户注销后,将cookie中的数字添加到数据库中的相应计数器。
问题:请注意,用户可能会在注销之前删除cookie,尽管这种情况非常少见,因为大多数用户在登录时不会删除cookie以免注销。