gpt4 book ai didi

java - Hibernate : many to many linker table, 最佳 OO 设计

转载 作者:行者123 更新时间:2023-12-01 15:40:37 26 4
gpt4 key购买 nike

如果我有 3 个表,其中包含预期的普通列:CustomerCustomerProductLinkerProduct

我希望在我的 Java 代码中执行此操作:

Customer customer =  myService.getCustomer(id); //calls hibernate session
List<Product> customerProducts = customer.getProducts();

我的 3 个实体以及每个实体中各自的集合(特别是 getProducts() 方法)会是什么样子?或者最好使用HQL命名查询来实现此目的?

我正在从java代码创建数据库表(使用hibernateconf中的创建选项),因此如果愿意的话可以更改表设计。

最佳答案

使用@JoinTable尝试@ManyToMany关系。客户拥有一组(或一系列)产品。一个产品有一组(或一个列表)客户。

@Entity
public class Customer {
@ManyToMany(cascade= CascadeType.ALL)
@JoinTable(name="customer_product",
joinColumns={@JoinColumn(name="customer_id")},
inverseJoinColumns={@JoinColumn(name="product_id")})
private Set<Product> products = new HashSet<Product>();
...

@Entity
public class Product {
@ManyToMany
@JoinTable(name="customer_product",
joinColumns={@JoinColumn(name="product_id")},
inverseJoinColumns={@JoinColumn(name="customer_id")})
private Set<Customer> customers = new HashSet<Customer>();
...

关于java - Hibernate : many to many linker table, 最佳 OO 设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8103830/

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