У меня есть функция автоматического создания student_no с использованием PostgreSQL.Он отлично работает, когда я использую его в загрузке Postgres и Spring.Но у меня есть проблема, когда я использую его в модульных тестах.В Postgres, когда я использую следующую команду:
Insert into students(firstName,lastName,age)
values ('Nguyen','Tran',12)
в базе данных student_no автоматический генератор выглядит как "28372".То же самое и с Spring boot.Когда я вызываю метод: studentRepository.save(student)
, он автоматически генерирует student_no.Но когда я выполняю следующий UnitTest:
@Slf4j
public class StudentTest {
@Mock
private StudentRepository studentRepository;
@Test
public void testGenerateStudentBooking_validRequest() {
Student student = new Student("Nguyen","Tran",23);
Student student = studentRepository.save(student);
}
}
Когда я сохраняю и отлаживаю, student_no не генерируется.Не могу понять почему?
ученик класса:
@Entity
@NoArgsConstructor
@RequiredArgsConstructor
public class Student {
@Id
private String id;
private String firstName;
private String lastName;
private Integer age;
private String student_no;
}
репозиторий Student
public inteface StudentRepository extends CrudRepository(Student,Integer) {
Student findStudentByStudentNo(String StudentNo);
}
тест ученика
@Slf4j
public class StudentTest {
@Mock
private StudentRepository studentRepository;
@Test
public void testGenerateStudentBooking_validRequest() {
Student student = new Student("Nguyen","Tran",23);
Student student = studentRepository.save(student);
//Student.studentNo is null :(
Student student1 = studentRepository.findStudentByStudentNo(student.getStudentNo);
}
}
если возможно, как я могу сообщить hibernate, что booking_no будетавтоматически сгенерированный и спящий режим ничего с этим не сделает.Или, другими словами, как автоматически генерировать booking_no с помощью функции в Postgres при использовании UnitTest.