簡體   English   中英

@ManyToOne @OneToMany 映射,外鍵為 null

[英]@ManyToOne @OneToMany Mapping , foreign key is null

@Entity
@Data
@NoArgsConstructor
public class Offer {
    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name = "user_id", referencedColumnName = "id")
    private User user;
}

@Data
@EqualsAndHashCode
@Entity
@NoArgsConstructor
public class User  {
    @OneToMany(mappedBy = "user",cascade = CascadeType.ALL,fetch=FetchType.LAZY)
    private Set<Offer> offers = new HashSet<Offer>();
}

如果表 User 和 Offer.user_id 列中的映射正確,請提供幫助,該列具有 null 值....:(

我不確定這些是否只是實體的一部分,但為了讓實體擁有一個 id,您需要為其提供一個並將相關字段注釋為 @Id。 我也使用@GeneratedValue(strategy = GenerationType.IDENTITY) 所以每個表都會得到它自己的id(由Hibernate生成,當你保存一個新實體而不是全局id時你不提供id,否則假設你添加一個提供,您獲得值為 x 的 id,然后添加新用戶,您獲得值為 x+1 的 id,依此類推...

@Entity
@Data
@NoArgsConstructor
public class Offer {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name = "user_id", referencedColumnName = "id")
    private User user;

}



@Data
@EqualsAndHashCode
@Entity
@NoArgsConstructor
public class User  {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
   private long id;
     @OneToMany(mappedBy = "user",cascade = CascadeType.ALL,fetch=FetchType.LAZY)
    private Set<Offer> offers = new HashSet<Offer>();
}`

暫無
暫無

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

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