在我的域模型我有產品列表實體,具有以下Hibernate映射的產品實體之間的雙向directionnel協會:如何在不加載所有數據庫的情況下在列表中添加產品?
@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>();
...
}
但是,當我嘗試將產品添加到一個持久productList的Hibernate的嘗試加載所有的產品在列表中!我有超過14000種產品在列表中!
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);
}
如何在不加載所有數據庫的情況下在列表中添加產品?
感謝您的文章!爲列表和產品之間的關係添加一個實體是解決插入問題的一個非常好的主意。但我的目標是創建一個有序的(@IndexColumn)產品列表。你知道如何管理新實體中的物品索引嗎? – 2010-06-24 09:28:26