@@ ManyToOne @OneToMany映射,外键为空

问题描述 投票:0回答:1
    @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列为空值....:(

hibernate orm null foreign-keys one-to-many
1个回答
0
投票

我不确定这些是否仅是实体的一部分,但为了使实体具有ID,您需要为其提供一个ID,并将相关字段注释为@Id。我也是@GeneratedValue(strategy = GenerationType.IDENTITY),所以每个表都将获得它自己的ID,而不是全局ID,否则,假设您添加了Offer,获得了带有值x的ID,然后添加了新的User,得到了带有值的ID x + 1等等...

@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>();
}`
© www.soinside.com 2019 - 2024. All rights reserved.