2016-06-11 14 views
2

GenericGenerator詳細....私はこれらの行を除いて、物事のほとんどを理解して上記のコードで休止状態:私は休止状態を勉強

@Id 
@GeneratedValue(generator="foreign") 
@GenericGenerator(name="foreign", strategy="foreign", parameters={ 
     @Parameter(name="property" ,value="company") 
}) 
public Long getId() { 
    return id; 
} 

parameters={ 
     @Parameter(name="property" ,value="company") 
} 

は、すべての場合

答えて

4

を助けてくださいGenericGeneratorでは、戦略に関するキー/値(パラメータ)のリストを渡すことができます。

戦略を使用してA GenericGenerator「外国人」とは、一個のパラメータは、「プロパティ」と呼ばれ、期待エンティティ名です。期待していつまり、エンティティのIDはリンクされたエンティティと同じになります。

著者エンティティ

@Entity 
@Table(name="authors") 
public class Author { 

    @Id 
    @GeneratedValue 
    private Integer id; 

    private String name; 

    @OneToOne(mappedBy="author", cascade=CascadeType.ALL) 
    private Biography biography;  
} 

伝記エンティティ:たとえば

@Entity 
@Table(name="biographies") 
public class Biography { 

    @Id 
    @Column(name="id") 
    @GeneratedValue(generator="gen") 
    @GenericGenerator(name="gen", strategy="foreign", 
    [email protected](name="property", value="author")) 
    private Integer id; 

    @OneToOne 
    @PrimaryKeyJoinColumn 
    private Author author; 
} 

その場合には、すべての伝記IDは、著者のと同じIDを持つことになりますID。