我有两个实体Customer
和Product
,关系为many-to-many
。在插入多对多表之前,休眠选择多列
`
@ManyToMany(cascade = CascadeType.MERGE, fetch=FetchType.LAZY)
@JoinTable(
name = "customer_products",
joinColumns={@JoinColumn(name="customer_id")},
inverseJoinColumns = {@JoinColumn(name="product_id")})
@CollectionId(
columns = @Column(name="id"),
type = @Type(type="long"),
generator = "native"
)
public Collection<Product> getProducts() {
return products;
}
public void addProduct(Product product){
this.products.add(product);
}
public void setProducts(Collection<Product> products) {
this.products = products;
}
`
我想增加客户产品
`
Customer customer = (Customer)session.load(Customer.class, new Long(1));
Product product = (Product) session.load(Product.class, new Long(1));
customer.addProduct(product);
session.persist(customer);`
代码所做的是什么,它会选择从表Customer
和Products
所有列并只插入ids
从这些表格转换为customer_products
表格。有没有办法只从上表中选择ids
?
我认为在性能方面会更好。它发送和接收的数据较少。我错了还是微不足道? – user1137146 2012-04-07 09:23:24
但是你打算如何处理ID? – JMelnik 2012-04-07 10:54:15
我这样理解。当在Customer类的hibernate中调用addProduct方法时,会在customer_products表中添加一行,并且它唯一添加的列是来自Customer和Table的表的ids。所以基本上我不需要选择其余的数据。 – user1137146 2012-04-07 11:07:24