我在DB中有以下表格:
material (id_mat, name, initial_weight, cargo_number, exp_date, left_amount)
我必须添加一个附加表,该表显示使用material
表中的材料构建的结构。在这里看起来如何:
material_construction (mat_id, construction_number)
然后我为表MatConstructionMapping
创建了一个名为material_construction
的实体类:
@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
实体中添加了getter:
@OneToOne
@JoinColumn(name = "mat_id")
public MatConstructionMapping getMaterialConstructionNumber() {
return conNumber;
}
问题在于,当我检索任何材料的conNumber
时,它总是null
,但是数据库中有值。我究竟做错了什么?
答案 0 :(得分:1)
你不能在两边都有JoinColumn,@ JoinColumn应该在你可以在一对一关系的任何一侧定义的拥有实体,另一边应该有mappedBy属性来指示反向关系,例如MatConstructionMapping是拥有实体,那么你应该编辑你的材料
@OneToOne(mappedBy="mat")
public MatConstructionMapping getMaterialConstructionNumber() {
return conNumber;
}