2013-01-11 5 views
1

고객 및 업로드 테이블 두 개가 있어야합니다. 여기서 고객이 업로드 한 항목 수를 추적합니다. 고유 한 식별자 인 공유 기본 키 CustomerID과의 일대일 관계입니다. 나는 구원을 얻으려고 애쓰는 중이다. 고유 식별자의 생성/저장을 처리하기 위해 Hibernates uuid2 전략을 사용하고 있습니다. 업로드 엔티티를 포함하기 전에 고객은 uuid를 사용하여 올바르게 저장합니다. 기본적으로 나는 누군가가 고객 객체를 만들 때마다 업로드가 생성되기를 원한다.JPA 2.0 + 일대일 + 공유 기본 키가 설정되지 않음

고객 :

@Entity 
public class Upload implements Serializable { 
    @Column(name="UPLOADCOUNT", nullable=true, unique=false) 
    private Integer uploadCount = new Integer(0); 

    @MapsId ("CUSTOMERID") 
    @OneToOne (optional=false) 
    @JoinColumn(name="CUSTOMERID", referencedColumnName = "CUSTOMERID", nullable=false, unique=true) 
    private Customer customer; 

    @Id 
    @Column(name="CUSTOMERID", length=36, nullable=false, unique=true, insertable=false, updatable=false) 
    private String customerId_; 

    public Upload(Customer customer) {  
     this.customer = customer; 
    } 
} 

업로드 :

@Entity 
public class Customer implements Serializable { 


    @Id 
    @Column(name = "CUSTOMERID", unique = true) 
    @GeneratedValue(generator = "uuid") 
    @GenericGenerator(name = "uuid", strategy = "uuid2") 
    private String customerId; 

    @OneToOne(mappedBy = "customer", optional = false, cascade = CascadeType.ALL) 
    private Upload upload ; 


    public Customer() { 
     this.upload = new Upload(this);   
    } 
} 

코드 저장 :

Customer customer = new Customer(); 
EntityManager em = EntityManagerUtil.getEntityManager(); 
EntityTransaction trans = em.getTransaction(); 

trans.begin(); 
em.persist(customer); 
trans.commit(); 

예외 :

javax.persistence.PersistenceException: org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): Upload 
+0

"저장"코드에 : '엔터티'란 무엇입니까? – ben75

+0

고객입니다. 코드를 업데이트했습니다. – Nadin

답변

2

대신 @JoinColumn 당신이 시도 할 수 있습니다 :

@PrimaryKeyJoinColumn(name="CUSTOMERID", referencedColumnName="CUSTOMERID") 

자세한 내용

here 또는 다른 가능한 솔루션 :이처럼 Upload 클래스를 업데이트합니다.

@Id 
@Column(name="CUSTOMERID", length=36, nullable=false, unique=true, insertable=false, updatable=false) 
@GeneratedValue(generator=”foreign”) 
@GenericGenerator(name=”foreign”, strategy = “foreign”, parameters = {@Parameter(name=”property”, value=”customer”)}) 
private String customerId_; 
+0

빠른 응답을 보내 주셔서 감사합니다.하지만 여전히 같은 오류가 발생합니다. – Nadin

+0

@Nadin이 내 게시물을 다른 가능한 솔루션 (최대 절전 모드 특정 항목 사용)으로 편집했습니다. – ben75

+0

같은 결과가 있습니다. 나는 이것이 일반적인 경우라고 생각했을 것이다. – Nadin

관련 문제