我在项目中用到JPA,例如有两个表“手机系列表(一方){id,series_name}”,“手机机型表(多方){id,model_name}”
HandserEntity.java
Entity
@SuppressWarnings("serial")
@Table(name="tab_handset_series")
public class HandserEntity implements Serializable{ public Integer id;//主键id
public String series_name;//系列名

public Set<HandmodEntity> handmodEntity = new HashSet<HandmodEntity>(0);//手机型号

public HandserEntity(){

}

public HandserEntity(Integer id,String series_name,Set<HandmodEntity> handmodEntity){
this.id=id;
this.series_name=series_name;

}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} @Column(name="series_name")
public String getSeries_name() {
return series_name;
} public void setSeries_name(String series_name) {
this.series_name = series_name;
} @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, mappedBy = "handmodEntity")
public Set<HandmodEntity> getHandmodEntity() {
return handmodEntity;
} public void setHandmodEntity(Set<HandmodEntity> handmodEntity) {
this.handmodEntity = handmodEntity;
}


}HandmodEntity.java@Entity
@SuppressWarnings("serial")
@Table(name="tab_handset_model")
public class HandmodEntity implements Serializable{ public Integer id;//主键id
public String model_name;//手机名
public HandserEntity series_id;//所属系列

public HandmodEntity(){

}

public HandmodEntity(Integer id,String model_name,HandserEntity series_id){
this.id=id;
this.model_name=model_name;
this.series_id=series_id;

} //------------set/get方法----------------------------
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} //--------------------------------------------------
@Column(name="model_name")
public String getModel_name() {
return model_name;
} public void setModel_name(String model_name) {
this.model_name = model_name;
} //--------------------------------------------------
@ManyToOne(cascade = {}, fetch = FetchType.LAZY)
@JoinColumn(name = "series_id", unique = false, nullable = true, insertable = true, updatable = true)
public HandserEntity getSeries_id() {
return series_id;
} public void setSeries_id(HandserEntity series_id) {
this.series_id = series_id;
}
}
我在网上查了很久,网上没有一个例子是像我这么写的。可我怎么写在程序中完全好使,一点错误也不报。而网上也有好几种写法。谁能告诉我一种比较权威的写法。谢谢

解决方案 »

  1.   

    这个能有什么权威的写法呢?根据需求写就是了.
    比如,ManyToOne默认是不进行懒加载的,你要是觉得你用不到的话,就完全
    可以不去加载
      

  2.   

    哦,对不起,我没有写清楚。我是想说@OneToMany里的 mappedBy 应该映射那个字段.上面的代码里,mappedBy="handmodEntity"是我贴错了,我在程序中是mappedBy="id";和想说@ManyToOne 中@JoinColumn(name = "series_id",.......)name属性
      

  3.   

    @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, mappedBy = "series_id")
    mappedBy的意思,你可以这样理解,当前类在Set<HandmodEntity>HandmodEntity类对应的字段是series_id
      

  4.   

    非常感谢sangshusen_1988 ,我已经按你说的做了。
      

  5.   

    可以参考我的文章
    http://www.javaeye.com/topic/641637
    里面包含JPA双向一对一,双向一对多,双向多对多,单向一对一,单向一对多,单向多对一与单向多对多