JPA @OneToMany和@ManyToOne:后引用为空

Ale*_*exR 7 java spring hibernate jpa

我有以下数据结构.

@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;
    }
}
Run Code Online (Sandbox Code Playgroud)

每个项目都包含对设备的反向引用:

class Item {
    private Device;
 @ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH} )
 public Device getDevice() {
  return device;
 }
}
Run Code Online (Sandbox Code Playgroud)

我可以创建设备,添加项目并保存所有这些.我可以从数据库中检索对象,除了对项目所持有的设备的引用外,一切正常.

如何读取项目并不重要:1.读取所有相关项目的设备2.读取项目

Device引用始终为null.我想我的注释@ManyToOne出了点问题.

我正在使用hibernate和spring,通过继承HibernateDaoSupport实现DAO.

以下是检索所有项目的代码示例:

getHibernateTemplate().loadAll(Item.class)
Run Code Online (Sandbox Code Playgroud)

axt*_*avt 10

由于您具有双向一对多关系,因此您需要使用mappedBy:

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

也可以看看: