代码之家  ›  专栏  ›  技术社区  ›  AlexR

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

  •  7
  • AlexR  · 技术社区  · 14 年前

    我有以下数据结构。

    @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;
     }
    }
    

    我可以创建设备,添加项目和保存所有这些。I可以从DB中检索对象,并且除了对该项所保存的设备的引用之外,所有内容都在工作。

    我如何阅读这些内容并不重要: 一。具有所有关联项的读取设备 2。读取项目

    设备引用始终为空。我想我的注释“ManyToOne”有问题。

    我使用hibernate和spring,通过子类HibernateDaoSupport实现DAO。

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

    getHibernateTemplate().loadAll(Item.class)
    
    1 回复  |  直到 14 年前
        1
  •  10
  •   axtavt    14 年前

    因为你有一个双向的一对多关系,你需要使用 mappedBy :

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

    另见: