2017-07-31 4 views
-2

ヌル:JPA OnetoOneマッピング戻り私はDBに次のテーブルが

material (id_mat, name, initial_weight, cargo_number, exp_date, left_amount) 

Iはmaterialテーブルから材料を使用して構築された構造を示しており、追加のテーブルを追加しなければなりませんでした。ここではそれがどのように見えるか:

material_construction (mat_id, construction_number) 

を私はその後、テーブルmaterial_constructionためMatConstructionMappingと呼ばれるエンティティクラスを作成:

@Entity(name = "material_construction") 
public class MatConstructionMapping implements Serializable { 

    private static final long serialVersionUID = 1739614249257235075L; 

    @Id 
    @OneToOne 
    @JoinColumn(name = "mat_id", referencedColumnName = "id_mat", insertable=false, updatable=false) 
    private Material mat; 

    @Column(name="construction_number") 
    private Integer number; 

    public Integer getConNumber() { 
     return number; 
    } 
} 

をそして、Materialエンティティで、次のゲッターを追加しました:

@OneToOne 
@JoinColumn(name = "mat_id") 
public MatConstructionMapping getMaterialConstructionNumber() { 
    return conNumber; 
} 

問題は、すべての資料のconNumberを取得するときは、常にnullですが、 DB内の値私は間違って何をしていますか?

答えて

1

あなたはJoinColumnを両側に持つことができません。@ JoinColumnは、1対1の関係で任意の側で定義できる所有エンティティにある必要があります。反対側には逆の関係を示すmappedBy属性が必要です。たとえばMatConstructionMapping所有するエンティティである場合は、素材を編集する必要があります

@OneToOne(mappedBy="mat") 
public MatConstructionMapping getMaterialConstructionNumber() { 
    return conNumber; 
} 
関連する問題