У меня есть класс пользователя с аннотацией @Entity.
@Entity
public class User{
@Id
@GeneratedValue
private Long id;
private String firstName;
private String lastName;
}
И мне нужно создать еще одну таблицу с данными пользователя.Он должен быть связан с User_id и не иметь собственного идентификатора: user_id
phone_number
address
Итак, теперь я использую это:
@Entity
@Table
@Data
public class UserDetails{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(nullable = false)
private Long id;
@OneToOne (fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
private User user;
private String address;
private String phone;
}
Но у меня естьвопрос: Почему я использую это:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(nullable = false)
private Long id;
, если
@OneToOne (fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
private User user;
делает для меня user_id?
Если я удаляю поле Id, у меня появляется ошибка: Нет идентификаторауказано для объекта: test.UserDetails, но эй!@PrimaryKeyJoinColumn создает идентификатор для этой сущности.
Может быть, я должен использовать @Id + @JoinColumn вместо @PrimaryKeyJoinColumn?