Есть несколько вещей, которые вам нужно проверить, чтобы убедиться, что это работает.
- Убедитесь, что вы правильно определили слой хранилища. Также убедитесь, что вы предоставили все правильные аннотации.
- Если вы создаете запросы для таблиц, убедитесь, что вы помещаете эти запросы в имя файла
schema.sql
. Также убедитесь, что файл помещен в каталог src/main/resources/
folder.But при предоставлении schema.sql
убедитесь, что spring.jpa.hibernate.ddl-auto
как оба не будут работать в одно и то же время , как и предполагалось.
В JPA-на основе приложения вы можете разрешить Hibernate создать схему или использовать schema.sql, но вы не можете сделать и то, и другое. Обязательно отключите spring.jpa.hibernate.ddl-auto, если вы используете schema.sql.
- Если у вас есть какие-либо запросы на обновление данных, которые нужно выполнить, поместите их в имена файлов
data.sql
. Также убедитесь, что файл помещен в папку src/main/resources/
. Это будет выполнено после того, как ddl-auto создаст таблицы.
Уровень репозитория, например:
@Repository
public interface HumanRepository extends JpaRepository<Human, Integer> {
}
Как сказал @sovannarith cheav, вам необходимо предоставить свойство в application.properties
или application.yml
, например:
spring.jpa.hibernate.ddl-auto=update
spring.jpa.generate-ddl=true
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
Свойство spring.jpa.hibernate.ddl-auto
может иметь различные значения в зависимости от вашего варианта использования. Значениядля этого свойства может быть:
validate: проверить схему, не вносит изменений в базу данных.
update: обновить схему.
create: создает схему, уничтожая предыдущие данные.
create-drop: удалить схему в конце сеанса.
Если это не сработало, возможно, Springboot не идентифицирует H2, поэтому попробуйте установить следующее:
spring.datasource.platform=h2
spring.datasource.initialization-mode=always
Официальный Док