나는 특정 카테고리 즉, 고전적인 다 대일 관계에 속한 제품 오브젝트를 가지고 있습니다.선택없이 최대 절전 모드로 삽입 또는 업데이트
@Entity
public class Product{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Long id;
String name;
Double price;
@ManyToOne(fetch = FetchType.LAZY)
Category category;
...
}
@Entity
public class Category implements Identifiable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
...
}
카테고리를 미리 선택하지 않고 제품을 삽입하고 업데이트하려고합니다. 이처럼 :
Product product = dao.get(productId);
Category category = dao.get(categoryId);
product.setCategory(category);
dao.update(product);
또는
Product product = new Product(somename);
Category category = dao.get(categoryId);
product.setCategory(category);
dao.insert(product);
는 업데이트 및 카테고리 선택하지 않고 삽입 할 수 있습니까? 나는 HQL이나 직접 쿼리를 사용하고 싶지 않다.
이 접근법의 문제점은 동일한 식별자를 사용하여 영구 엔터티의 새 인스턴스를 만드는 것입니다. '카테고리'가 ** 현재 ** 세션과 관련되지 않았기 때문에 이번에는 당신에게 도움이되었을 수 있습니다. 만약 그렇다면, Hibernate는 예외를 던질 것이다. 또한 데이터 무결성 측면에서 위험합니다. 'category'에 대한 다 대일에 대한 계단식을 지정하면 위의 코드는 원래 범주를 모든 빈 값으로 덮어 씁니다 (또는 제약 조건 위반 오류로 인해 실패합니다). – ChssPly76
흠, 내가하고있는 감각이있었습니다. 뭔가 더러운 여기. 설명 주셔서 감사합니다. – Vladimir