@ManyToOne @OneToMany Mapping, внешний ключ равен нулю - PullRequest
0 голосов
/ 27 мая 2020
@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 имеют нулевые значения ....: (

1 Ответ

0 голосов
/ 27 мая 2020

Я не уверен, что это только части сущностей, но для того, чтобы у сущности был идентификатор, вам необходимо предоставить ему его и аннотировать соответствующее поле как @Id. Я также использую @GeneratedValue (strategy = GenerationType.IDENTITY), поэтому каждая таблица получит свой собственный идентификатор (сгенерированный Hibernate, вы не предоставляете идентификатор при сохранении нового объекта, а не глобальный идентификатор, в противном случае допустим, вы добавляете Предложите, вы получите идентификатор со значением x, затем добавьте нового пользователя, вы получите идентификатор со значением 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>();
}`
...