我有以下数据结构。
@Entity
public class Device extends AbstractEntity implements Serializable{
private int id;
//...
private List<Item> items;
@OneToMany(fetch=FetchType.EAGER)
public List<Item> getItems() {
return configurationItems;
}
}
每个项目都包含对设备的反向引用:
class Item {
private Device;
@ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH} )
public Device getDevice() {
return device;
}
}
我可以创建设备,添加项目并保存所有这些。我可以从数据库中检索对象,除了对项目所持有的设备的引用外,一切正常。
如何读取项目并不重要: 1.读取所有相关项目的设备 2.阅读项目
设备引用始终为null。我想我的注释@ManyToOne出了点问题。
我正在使用hibernate和spring,通过继承HibernateDaoSupport实现DAO。
以下是检索所有项目的代码示例:
getHibernateTemplate().loadAll(Item.class)
答案 0 :(得分:10)
由于您具有双向一对多关系,因此您需要使用mappedBy
:
@OneToMany(fetch=FetchType.EAGER, mappedBy = "device")
public List<Item> getItems() {
return configurationItems;
}
另见: