h2 + spring для тестов

210
16 мая 2018, 00:00

Будьте добры, укажите на ошибки. Использую: gradle, spring, java 9, h2 database. Проблемы: 1. Не вставляются данные в таблицу из data.sql IDE говорит "unable to resolve table" Из-за чего такое может быть ? 2. При прохождение теста ошибка java.lang.NullPointerException из-за ошибки №1 как понимаю Делаю: - прописал зависимости в gradle; - прописал в spring

 <jdbc:embedded-database id="dataSource" type="H2">
        <jdbc:script location="schema.sql"/>
        <jdbc:script location="data.sql"/>
    </jdbc:embedded-database>
  • создал два файла schema.sql

    create table if not exists PersonForH2 ( id IDENTITY, first_name varchar(255), last_name varchar(255), age integer );

data.sql

insert into PersonForH2 (first_name, last_name, age) VALUES ('Roma', 'Romarov', '18');
insert into PersonForH2 (first_name, last_name, age) VALUES ('Pavel', 'Pavlov', '19');
insert into PersonForH2 (first_name, last_name, age) VALUES ('Egor', 'Egorov', '20')

Пытаюсь провести тест

class SimplePersonTest {
    private EmbeddedDatabase embeddedDatabase;
    private JdbcTemplate jdbcTemplate;
    private PersonDao personDao;
    @BeforeEach
     void setUp() {
        embeddedDatabase = new EmbeddedDatabaseBuilder()
                .addDefaultScripts()
                .setType(EmbeddedDatabaseType.H2)
                .build();
        jdbcTemplate = new JdbcTemplate(embeddedDatabase);
        personDao = new SimplePerson(jdbcTemplate);
    }


    @Test
    void getAll() {
        Assertions.assertNotNull(personDao.getAll());
        Assertions.assertEquals(2,personDao.getAll().size());
    }

классы:

public interface PersonDao {
    long create(Person person);
    default Optional<Person> get(long id) {
        return getAll().stream().filter(person -> person.getId() == id).findAny();
    }
    List<Person> getAll();
    Person update(Person person);
    PersonDao remove(long id);
    default PersonDao remove(Person person) {
        return remove(person.getId());
    }
}
public interface Person {
    String getFirstName();
    String getLastName();
    int getAge();
    Long getId();
    String setFirstName();
    String setLastName();
    String setAge();
    Long setId();

}
@AllArgsConstructor(onConstructor = @__(@Autowired))
@Data
@Component("person")
@NoArgsConstructor(force = true)
public class SimplePerson  implements Person, PersonDao {

    Long id;
    String firstName;
    String lastName;
    int age;
    JdbcTemplate jdbcTemplate;
    public SimplePerson(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }
//....

}

READ ALSO
JPA: Многие ко многим не удаляются записи

JPA: Многие ко многим не удаляются записи

У меня проблема с проектированием базы данных

220
Отфильтровать список java

Отфильтровать список java

Приложение состоит из нескольких активностейПриложение - это интернет-магазин

286
Android Studio, запретить вызов Toast поверх другого

Android Studio, запретить вызов Toast поверх другого

У меня есть метод, который вызывает Toast и отображает какую-то строку, но если быстро его вызывать, то сообщения накладываются поверх друг друга,...

213
Joomla 3.8.2 в куске кода в template.css не видит margin

Joomla 3.8.2 в куске кода в template.css не видит margin

Пишу я значит шаблон для сайта и столкнулся с такой проблемой: два последних margin ни в какую не хотят работать, прошарил туеву хучу форумов...

255