gpt4 book ai didi

java - 如何防止购物车中出现重复商品?

转载 作者:太空宇宙 更新时间:2023-11-04 12:43:18 26 4
gpt4 key购买 nike

对于当前数据库的结构:

database structure

用户

@Entity
@Table(name = "users")
public class User {

@Id
@Column(name = "username", unique = true, nullable = false, length = 45)
private String username;
@Column(name = "password", nullable = false, length = 60)
private String password;
@Column(name = "enabled", nullable = false)
private boolean enabled;

@OneToMany(fetch = FetchType.EAGER, mappedBy = "user", cascade=CascadeType.ALL)
private Set<UserRole> userRole = new HashSet<UserRole>(0);

@ManyToMany(fetch=FetchType.EAGER)
@JoinTable(
name = "users_product",
joinColumns ={@JoinColumn (name = "users_username", referencedColumnName = "username")},
inverseJoinColumns = {@JoinColumn(name = "Products_idProducts", referencedColumnName = "idProducts")}
)
List<Products> productsList = new ArrayList<Products>();

产品

@Entity
@Table(name = "products")
public class Products implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "idProducts")
private long id;

@Column(name = "description")
private String description;

@Column(name = "price")
private String price;

@Column(name = "image")
private byte [] image;

@ManyToMany(mappedBy = "productsList")
List<User> usersList = new ArrayList<User>();

//setters - getters

我想实现一个购物篮。

我现在拥有的:在 View 页面上包含产品和复选框的页面。我找到这些产品并将它们发送到我的 Controller ,然后将它们设置为当前用户。

productsList = myService.findManyProducts(toAdd);
user.setProductsList(productsList);
myService.updateUser(user);


@Transactional
public void updateUser(User user){
userDao.update(user);
}

更新用户功能:

@Override
public void update(User user) {
entityManager.merge(user);
}

根据最新添加的内容,这些操作将作为不同的值输入到数据库中。

我想要什么:用户将一些产品添加到购物车,浏览其他商品,并将新产品添加到购物车。如何确保购物车中找不到重复的商品? JPA 有一些标准方法吗?还是我需要自己检查产品列表才能将其添加到数据库?

最佳答案

我通过将 User 实体中的 List 集合更改为 Set 解决了这个问题。

关于java - 如何防止购物车中出现重复商品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36603490/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com