2011-08-24 4 views
0

를 저장하지 않습니다. 표 바코드product_id (제품 표에 외래 키) 및 코드 속성이 있습니다. 내 코드에서Hibernate는 내가 아주 간단한 테이블 구조를 가지고 내 새로 만든 객체

나는 제품 객체의 새로운 인스턴스를 생성합니다

Product product = new Product(); 

을 나는 제품 저장 :

Barcode barcode = new Barcode(); 
:

session.save(product); 

나중에 내가 바코드 개체의 새 인스턴스를 만듭니다

바코드와 제품을 연결하십시오.

barcode.setProduct(product); 

및 바코드 저장하려고 :

session.save(barcode); 

내가 받고 있어요 : 스레드에서

예외를 "주"org.hibernate.NonUniqueObjectException : 같은과 다른 객체 식별자 값이 이미 세션과 연결되어 있습니다.

아이디어가 있습니까?

+0

실제 코드와이 두 엔티티의 코드 및 매핑을 보여줍니다. –

답변

0

JB가 말한 것처럼 매핑 파일 (및 실제 코드)이 실제로 도움이 될 것이라고합니다.

session.flush() 

후 :

session.save(product) 

난 당신이 바코드를 저장할 때 그 최대 절전 모드는이 트랜잭션을 "최적화"노력하고 다시 동일한 제품을 절약 할 수 있습니다 추측하고있어 지금 당신은 추가 시도 할 수 있습니다 .

하지만 한 가지 가능성은 있습니다. 코드에 루프가 있습니까? 아이디어의

+0

NH은 동일한 ID를 가진 다른 개체에 대해 불평합니다. 그것은 다른 것임에 틀림 없다. –

3

적어도 몇 :

  • 당신은 세대 전략없이 @Id 필드를 매핑 한, 당신은 ID를 직접 설정하지 않는 것입니다.
  • 바코드 테이블에 실제로 두 열만있는 경우 product_id를 @Id 열로 설정하고 동일한 제품에 대해 두 개의 Barcode 개체를 만드는 경우이 작업이 수행됩니다.

자세한 내용은 아이디어를 얻으십시오.

관련 문제