2012-04-24 1 views
2

저는 프레임 워크와 yml 표기법을 처음 사용하고 있으며, 최대 절전 모드의 기초 만 알고 있습니다. .yml 파일을 사용하여 일부 테스트 데이터를 설정하려고합니다. 같은 Competition 객체를 참조하는 여러 Question 객체와 ActiveCompetition 객체를 정의하려고합니다. 나는 작동yml 표기법을 사용하여 정의 된 객체의 중복

ActiveCompetition(1): &myactivecompetition 
    activeCompetition: &mycompetition 
     name: Name of the competition 

Question(11): 
    title: Title 1 
    competition: *mycompetition 

Question(12): 
    title: Title 2 
    competition: *mycompetition 

Question(13): 
    title: Title 3 
    competition: *mycompetition 

하지만 Hibernate는 4 회 * mycompetition을 절약 할 것으로 보인다 : 내 .yml 파일 (내가 관련이없는 생각 제거한)과 같습니다. 는 javax.persistence의 속성은 다음과 같이 설정되어있는 자바 콩에서

은 다음과 같습니다

@Entity 
@Transactional 
public class ActiveCompetition extends Model { 

    @Required 
    @OneToOne(cascade= CascadeType.ALL) 
    private Competition activeCompetition; 
} 

@Entity 
@Transactional 
public class Question extends Model { 

    ... 

    @Required 
    @OneToOne(cascade= CascadeType.ALL) 
    private Competition competition; 
} 

가 어떻게 Hibernate는 mycompetition 데이터베이스에 한 번만 저장해야 * 그 이해를해야합니까? .yml 파일에 데이터베이스 ID를 써야합니까? 그렇다면 어떻게해야합니까? 나는 이미 'id : 99'를 activeCompetition 아래에 추가하려고 시도했지만 도움이되지 않습니다.

먼저 하나는 당신이 relatiosn OneToOne를 선언하고 있지만 다음 YAML 파일에 당신이 ManyToOne 관계를 만들 수 있다는 것입니다 :

답변

1

는 두 가지 문제가 있습니다. OneToOne은 각 ActiveCompetition이 최대 하나의 질문을 갖고, 각 질문이 하나의 ActiveCompetition과 관련이 있음을 의미합니다.

당신이 원하는 것은 ActiveCompetition에 많은 질문이있는 ManyToOne 관계입니다. 자바 코드를 업데이트해야합니다.

두 번째는 당신이 당신의 ActiveCompetition를 정의하는 것입니다 :

ActiveCompetition(1) 

YAML에서 AFAIK, 당신은 엔티티와 함께 ​​제공되는 참조 파일에 다른 엔티티를 참조 (또는 내가 해냈어). 위의 선언에서 참조 번호는() 사이에 숫자 1입니다.

그래서 당신은 당신의 파일을 변경해야합니다

Question(13): 
    title: Title 3 
    competition: 1 
+0

문제 # 2 문제였다. 이제 작동합니다. 고맙습니다! – nturpin