2010-11-18 124 views
5

我有以下数据结构。JPA @OneToMany和@ManyToOne:返回引用为空

@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.读项目

设备参考总是空。我想我的注释@ManyToOne有问题。

我使用hibernate和spring,通过继承HibernateDaoSupport来实现DAO。

这里是获取所有项目的代码示例:

getHibernateTemplate().loadAll(Item.class) 

回答

7

既然你有一个双向one-to-许多relathionship,你需要使用mappedBy

@OneToMany(fetch=FetchType.EAGER, mappedBy = "device") 
public List<Item> getItems() { 
    return configurationItems; 
} 

参见:

+0

非常感谢。我相信现在会起作用。 – AlexR 2010-11-18 19:31:31