java - JPA @OneToMany 和@ManyToOne : back reference is null

标签 java hibernate spring 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;
    }
}

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

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

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

我如何阅读这些项目并不重要: 1.读取设备与所有相关项目 2.阅读项目

设备引用始终为空。我猜我的注解 @ManyToOne 有问题。

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

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

getHibernateTemplate().loadAll(Item.class)

最佳答案

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

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

另请参阅:

关于java - JPA @OneToMany 和@ManyToOne : back reference is null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4218273/

相关文章:

java - Fork/Join 上下文中的 Phaser 与 CyclicBarrier

java - 使用和不使用 new 运算符创建 java 字符串之间的区别

java - Hibernate:Ejb3Configuration 类的替代品

java - 为什么 Hibernate 会阻止 Java 进程退出?

java - Spring security Basic Authentication - 401 Unauthorized with correct credentials

java - Ruby 是按值传递还是按引用传递?

java - 将单行 HTML 文件分割为格式良好的 HTML 文件

java - FETCH JOIN 最大深度?

spring - WebService - 无法初始化代理 - 无 session

java - Spring Roo + hibernate : uppercase database name in the query