2016-06-11 125 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。