В моем проекте я использовал EclipseLink в качестве реализации JPA.И у меня есть две сущности, Product и ProductDetail:
- Они имеют отношение один к одному.Один продукт должен иметь только один ProductDetail.
- ProductDetail не может быть нулевым.Один продукт всегда должен иметь ProductDetail.
- Отношение является однонаправленным.Я получу доступ к ProductDetail только из Product.
- У двух объектов должен быть общий первичный ключ, идентификатор продукта должен быть равен prodId ProductDetail.
Поэтому я спроектировал модели сущностей следующим образом:
@Table(name="product")
public class Product{
@Id
@GeneratedValue(generator = "PRODUCT_ID")
@UuidGenerator(name = "PRODUCT_ID")
@Column(name = "id", unique=true, nullable=false, length=200)
private String id;
// Some other properties....
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = false)
@PrimaryKeyJoinColumn
private ProductDetail productDetail;
}
@Table(name="product_detail")
public class ProductDetail{
@Id
@Column(name = "prod_id", unique=true, nullable=false, length=200)
private String prodId;
// Some other properties....
}
Но ленивая загрузка никогда не работала.ProductDetail всегда выбирается вместе с Product.Я проверил много документов, но все еще не могу понять это.У кого-нибудь есть опыт по этому поводу?Большое спасибо!
УВЕДОМЛЕНИЕ : я использую EclipseLink, но не Hibernate.