小编Jul*_*lin的帖子

如何在列表中添加产品而不加载所有数据库?

在我的域模型中,我在ProductList实体和Product实体之间有一个双向关联,具有以下hibernate映射:

@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>();

...
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将产品添加到持久性产品列表时,Hibernate尝试在列表中加载所有产品!我在列表中有超过14000种产品!

Product item = (Product) session.get(Product.class, 123);
ProductList myFavoriteItems = (ProductList) session.get(ProductList.class, 321);

// Evil lazy loading (need more …
Run Code Online (Sandbox Code Playgroud)

database many-to-many hibernate lazy-loading

5
推荐指数
1
解决办法
2175
查看次数

标签 统计

database ×1

hibernate ×1

lazy-loading ×1

many-to-many ×1