2010-01-07 4 views
0

나는이 두 테이블이 있습니다Java-DAO : 어떻게 테이블에 기본값을 저장할 수 있습니까?

T1: County- Name - FK_Country 
T2: Country - Name 

그리고 나는 군을 저장할 때, 나는 기본적으로 국가를 선택하는 것이 좋습니다,하지만 난이 오류가 나타납니다 : 객체가 저장되지 않은 과도 인스턴스 - 전에 transient 인스턴스를 저장 병합 : local.Country; 상자의 예외는 org.hibernate.TransientObjectException입니다 : 객체가 저장되지 않은 과도 인스턴스 - 병합하기 전에 transient 인스턴스를 저장합니다 local.County

자바 코드

Country country = new Country("USA"); 

localizationService.saveCountry(country); 
localizationService.saveCounty(getForm().getModelObject()); 

답변

0

내가 볼 여기에 두 가지 문제 :

  1. 각 저장에 대해 새 Country을 작성 중입니다.
  2. Country 개체를 저장하기 전에 County에 연결하지 않았습니다.

데이터베이스에서 국가를로드하려고 시도합니다. 그 대신 일을한다 :

Country country = localizationService.findByName("USA"); 
// My assumption on your model here 
County county = getForm().getModelObject(); 
county.setCountry(country); 
localizationService.saveCounty(county); 
+0

예 솔루션이 옳다 :

Country country = new Country("USA"); 

가의 라인을 따라 뭔가! –

+0

그래, 문제는 : 내 테이블의 버전 열이 null이 아니어야한다는 것을 알지 못했습니다. 버전 열을 null (이 열은 분명히 JPA에 사용됨)로두고 테이블에 많은 정보를 삽입했습니다. 아무도 대답 할 시간이 없으면 다시 박살 내십시오. –

관련 문제