簡體   English   中英

外鍵中的JPA / Hibernate OneToOne Null

[英]JPA / Hibernate OneToOne Null in foreign key

我有以下兩個具有雙向OneToOne關系映射的實體,數據訪問由Hibernate EntityManager v。“3.5.1-Final”提供。

@Entity
@Table(name = "details")
public class Details {
    private Long id;
    private User user;

    public void setUser(User user) {
        this.user = user;
    }

    @OneToOne  
    @JoinColumn(name="user_id") 
    public User getUser() {
        return user;
    }

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", unique = true, nullable = false)
    public Long getId() {
        return id;
    }

    private void setId(Long id) {
        this.id = id;
    }
}

和:

@Entity
@Table(name = "users")
public class User {
private Long id;
private Details details;

public void setDetails(Details details) {
    this.details = details;
}

@OneToOne(mappedBy="user",cascade=CascadeType.ALL)  
public Details getDetails() {
    return details;
}
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", unique = true, nullable = false)
    public Long getId() {
        return id;
    }

    private void setId(Long id) {
        this.id = id;
    }
}

持久性代碼:

User user = new User();
Details details = new Details();
user.setDetails(details);

entityManager.persist(user);

然后在兩個表中正確插入數據,問題是詳細信息表“user_id”中的FK變為空,不確定這里缺少什么。

你需要添加details.setUser(user).

user.setDetails(details); 僅在User實體中設置外鍵。 @OneToOne只告訴hibernate如何解釋返回的數據(以及如何獲取 - 使用連接)。 它沒有告訴Hibernate設置哪些外鍵。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM