Я хочу протестировать свой UserRepository, но постоянно получаю эту ошибку ```org.springframework.dao.InvalidDataAccessResourceUsageException: ошибка при выполнении изолированной работы; SQL [нет данных]```` Я не знаю, где я ошибся. Я хочу использовать H2 в качестве базы данных для своих тестов, поэтому область зависимости h2 является тестовой. Я подумал, возможно, причина в этом
Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "_USER_SEQ" not found (this database is empty); SQL statement:
select next_val as id_val from _user_seq for update [42104-214]
Но я не знаю, пожалуйста, помогите.
UserRepositoryTest:
package com.david.caterest.repository;
import com.david.caterest.entity.User;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import java.util.Optional;
import static org.assertj.core.api.Assertions.assertThat;
@DataJpaTest
class UserRepositoryTest {
@Autowired
private UserRepository userRepository;
@Test
void shouldFindStudentWhenGivenExistentEmail() {
// given
String email = "test@gmail.com";
User user = new User();
user.setEmail(email);
// when(userRepository.findByEmail(email)).thenReturn(Optional.of(user));
userRepository.save(user);
// when
Optional result = userRepository.findByEmail(email);
// then
assertThat(result).isPresent();
assertThat(result.get()).isEqualTo(user);
}
@Disabled
@Test
void shouldNotFindStudentWhenGivenNonexistentEmail() {
}
}
Репозиторий пользователей:
public interface UserRepository extends JpaRepository {
Optional findByDisplayNameAndPassword(String username, String password);
Optional findByDisplayName(String username);
Optional findByEmail(String email);
Boolean existsByEmail(String email);
}
Пользователь:
package com.david.caterest.entity;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@Setter
@Getter
@RequiredArgsConstructor
@Entity
@Table(name = "_user")
public class User implements UserDetails {
@Id @GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Lob
@Column(length = 31_457_280) // 30MB
private Byte[] profilePicture;
// @NotBlank
private String displayName;
// @NotBlank
private String firstName;
// @NotBlank
private String lastName;
// @NotBlank
@Column(unique = true)
private String email;
// @NotBlank
private String password;
private String biography;
private LocalDate dateOfBirth;
private String telephoneNumber;
private String city;
private String country;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
private List
pictures = new ArrayList();
@Enumerated(EnumType.STRING)
private Role role;
@Override
public Collection
Подробнее здесь: https://stackoverflow.com/questions/766 ... -performin