Trong mô hình tên miền của tôi Tôi có một hiệp hội bi-directionnel giữa thực thể ProductList và đơn vị sản phẩm với các bản đồ ngủ đông sau:Cách thêm sản phẩm vào danh sách mà không tải tất cả cơ sở dữ liệu?
@Entity @Indexed
@Table(name="product_list")
public class ProductList {
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name = "list_items",
inverseJoinColumns = { @JoinColumn(name = "product_id")},
joinColumns = { @JoinColumn(name = "list_id")})
@IndexColumn(name = "item_index", base = 1, nullable = false)
@LazyCollection(LazyCollectionOption.EXTRA)
@BatchSize(size=50)
private List<Product> products = new LinkedList<Product>();
....
}
@Entity
@Table(name="logical_item")
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public class Product {
@ManyToMany(fetch=FetchType.LAZY, mappedBy="products")
private Set<ProductList> productLists = new LinkedHashSet<ProductList>();
...
}
Nhưng khi tôi cố gắng thêm một sản phẩm cho một dai dẳng productList Hibernate cố gắng tải tất cả các sản phẩm trong danh sách trước đây! Tôi có hơn 14 000 sản phẩm trong một danh sách!
Product item = (Product) session.get(Product.class, 123);
ProductList myFavoriteItems = (ProductList) session.get(ProductList.class, 321);
// Evil lazy loading (need more 512Mo of memory)
myFavoriteItems.addItem(Product item);
public void addItem(Product item){
this.getProducts().add(item);
item.getProductLists().add(this);
}
Cách thêm sản phẩm vào danh sách mà không tải tất cả cơ sở dữ liệu?
Cám ơn bài viết của bạn! Thêm một thực thể cho mối quan hệ giữa danh sách và sản phẩm là một ý tưởng rất tốt giải quyết vấn đề chèn. Nhưng mục tiêu của tôi là tạo ra một danh sách các sản phẩm (@IndexColumn) có thứ tự. Bạn có biết cách quản lý chỉ mục mục trong thực thể mới không? –