Я создал проект Spring Boot для сопоставления «один к одному» с использованием базы данных H2, когда я создал запись, внешний ключ в другой таблице показывает нулевое значение.
Настройка, связанная с БД, и консоль в порядке, когда Я вижу записи, затем я нашел нулевое значение.
Руководство по Pls, где я делаю ошибку.
Я пробовал без соединения один-к-одному, оно работает нормально.
Схема. sql
DROP TABLE IF EXISTS instructor;
CREATE TABLE instructor (
id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(250) NOT NULL,
last_name VARCHAR(250) NOT NULL,
email VARCHAR(250) DEFAULT NULL
);
DROP TABLE IF EXISTS instructor_detail;
CREATE TABLE instructor_detail (
id INT AUTO_INCREMENT PRIMARY KEY,
instructor_id INT,
youtube_channel VARCHAR(250) NOT NULL,
hobby VARCHAR(20) NOT NULL,
FOREIGN KEY (instructor_id) REFERENCES instructor(id)
);
Инструктор. java
@Table(name = "instructor")
public class Instructor {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "email")
private String email;
@OneToOne(cascade = CascadeType.ALL,mappedBy="instructor")
private InstructorDetail instructorDetail;
public Instructor(String firstName, String lastName, String email) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
}
}
InstructorDetail. java
@Table(name = "instructor_detail")
public class InstructorDetail {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "youtube_channel")
private String youtubeChannel;
@Column(name = "hobby")
private String hobby;
@OneToOne
@JoinColumn(name = "instructor_id", nullable = false)
private Instructor instructor;
public InstructorDetail(String youtubeChannel, String hobby) {
this.youtubeChannel = youtubeChannel;
this.hobby = hobby;
}
}
Основной Java Класс
@SpringBootApplication
public class H2JoinExampleApplication implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(H2JoinExampleApplication.class, args);
}
@Autowired
private InstructorRepository instructorRepository;
@Override
public void run(String...args) throws Exception {
Instructor instructor = new Instructor("ABC", "EFG", "ABC@gmail.com");
InstructorDetail instructorDetail = new InstructorDetail("Java", "Cricket");
// associate the objects
instructor.setInstructorDetail(instructorDetail);
instructorRepository.save(instructor);
}
}