Модель упрощена для вопроса.
У меня есть эта сущность:
@Entity
public class Formation {
@Id
Long id;
String login;
String code;
String level;
// geters and Setters
С этим хранилищем:
public interface FormationRepository extends JpaRepository<Formation, Long> {
@Query(value = "SELECT UNIQUE l.id, l.login, d.code,d.level\n"
" FROM table_login l,\n" +
" table_diploma d,\n" +
" WHERE
" l.fhab_key = d.fhab_key\n" +
" AND l.login= :login", nativeQuery = true)
List<Formation> findAllByLogin(@Param("login")String login);
Пока все хорошо, этоработает.
Теперь я хочу добавить тест для репозитория (с и h2database).Но я не могу сохранить данные, так как сущность не отображается в одну таблицу.
Так что это не сработает:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
public class FormationRepositoryTest {
@Autowired
FormationRepository formationRepository;
@Test
public void communeRepositoryTest() {
Formation formation = new Formation();
formation.setId(123L);
formation.setDlog_login("123");
formationRepository.save(formation); // ok
formationRepository.findAllByLogin("123"); // ko -> Caused by: Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: scolarite.scol_droit_login is not mapped
}
}
Здесь мне нужно добавить, что яне хочу, чтобы в моем приложении были файлы sql.
Так, каково было бы здесь решение?
Изменить мою модель, чтобы создать сущность за таблицей?(на самом деле, мой запрос использует 8 внутренних соединений, поэтому все это будет довольно долго кодировать ...)
Другое решение?