2013-03-22 157 views
1

我需要CompanyUser.companyRolCompanyUsers屬性與OneToMany關係,在每個查詢中完成。jpa映射兩個屬性

JPA company_usr實體:

@Entity 
@Table(name = "company_usr") 
public class CompanyUser extends BaseModel implements Serializable { 

    @Id 
    @ManyToOne(fetch = FetchType.EAGER) 
    @JoinColumn(nullable = false) 
    private Company company; 
    @Id 
    @ManyToOne(fetch = FetchType.EAGER) 
    @JoinColumn(name = "usr_id", nullable = false) 
    private User user; 

    @Column(nullable = false) 
    private Boolean external; 

    @OneToMany(fetch = FetchType.EAGER) 
    private List<CompanyRolCompanyUser> companyRolCompanyUsers; 

.... 

JPA companyRol_companyUsr實體:

@Entity 
@Table(name = "companyRol_companyUsr") 
public class CompanyRolCompanyUser extends BaseModel implements Serializable { 

    @Id 
    @ManyToOne(fetch = FetchType.EAGER) 
    @JoinColumns({ 
     @JoinColumn(name="companyuser_company_id", referencedColumnName="company_id"), 
     @JoinColumn(name="companyuser_usr_id", referencedColumnName="usr_id") 
     }) 
    private CompanyUser companyUser; 

    @Id 
    @ManyToOne(fetch = FetchType.EAGER) 
    private CompanyRol companyRol; 

.... 

如何設置companyRolCompanyUsers屬性mappedBy是否正確?

回答

0

如果我得到你想要達到的目標,我認爲你需要的東西,如:

@OneToMany(fetch = FetchType.EAGER, mappedBy="companyUser") 
private List<CompanyRolCompanyUser> companyRolCompanyUsers; 
+0

的mappedBy引用一個未知目標實體屬性:在com.smf.model.CompanyUser.companyRolCompanyUsers com.smf.model.CompanyRolCompanyUser.companyUser這是錯誤可能是由多個@Id在CompanyRolCompanyUser實體造成的? – 2013-03-22 11:48:22

0

您可以有兩個屬性,像這樣同一列:

@JoinColumn(name = "CGRADO_CODIGO", referencedColumnName = "CGRADO_CODIGO") 
    @ManyToOne 
    @NotFound(action=NotFoundAction.IGNORE) 
    private SipreGrado     sipreGrado; 

    @Column(name = "CGRADO_CODIGO",insertable=false,updatable=false) 
    private String      sipreGradoCodigo; 

請記住,如果你有有時實體NULL您可以跳過該註釋

@NotFound(action=NotFoundAction.IGNORE) 

另外,請記住設置

insertable=false,updatable=false 

您不希望包含在插入/更新查詢中的那個。