Я пытаюсь успешно сопоставить два класса в отношениях OneToOne; главным образом потому, что моему классу User нужны два идентификатора GeneratedValue. Я использовал Lombok для геттеров и конструкторов; В качестве базы данных я использую Postgres.
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long Id;
@OneToOne(fetch = FetchType.LAZY,cascade = CascadeType.ALL)
@JoinColumn(name = "digital_code", referencedColumnName = "digital_code")
private DigitalCode digitalCode;
@Column (name = "name")
private String name;
@Column (name = "email")
private String email;
}
Второй класс
@Entity public class DigitalCode {
@Id
@Column(name = "digital_code", unique = true, nullable = false)
@Size(min = 100000, max = 999999)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long digitalCodeId;
}
Обе таблицы user и digital_code создаются в базе данных. Однако
Когда я отправляю данные в свою базу данных с телом
{
"name": "test name",
"email": "test@gmail.com",
}
Я получу 200 обратно
{
"digital_code": null,
"name": "test name",
"email": "test@gmail.com",
"id": 1
}
Пока я ждал
{
"digital_code": 100001, // due to @size annotation
"name": "test name",
"email": "test@gmail.com",
"id": 1
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... -id-column