Краткий ответ: Добавьте @EntityScan("com.sample.modelo")
в начало класса PostgresApplication
:
package com.sample.postgres;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication(scanBasePackages="com.sample")
@EntityScan("com.sample.modelo")
public class PostgresApplication {
public static void main(String[] args) {
SpringApplication.run(PostgresApplication.class, args);
}
}
Дополнительная информация:
Ваша конфигурация мне подходит. Убедитесь, что ваша сущность сканируется. Я имею в виду, что вы, возможно, настроили свой проект так, чтобы ваш класс сущностей не читался. Вот минимальная конфигурация, которая вам нужна:
- Используйте эту зависимость
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
Имейте свой
application.properties
в
src/main/resources
spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
spring.datasource.username=postgres
spring.datasource.password=mysecretpassword
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
- Создайте свою сущность (у вас это уже есть)
@Data
@Entity
@Table(name= "users")
public class User {
//iduser
@Id
@GeneratedValue(generator="system-uuid")
@GenericGenerator(name="system-uuid", strategy="uuid2")
private String idUser;
private String firstName;
private String lastName;
private String email;
private String password;
private String rol;
private String language;
public User(){
}
}
У вас есть
@SpringBootApplication
класс
package your.package;
@SpringBootApplication
public class MainApp {
public static void main(String[] args) {
SpringApplication.run(StackTest.class);
}
}
И это то, где это более чем важно! Если ваш класс сущности User
не находится в подпакете your.package
, то вам нужно добавить пользовательскую аннотацию к вашему @SpringBootApplication
классу.
@SpringBootApplication
@EntityScan("my.other.package")
public class MainApp {
}
Подробнее о настройке Hibernate
При настройке приложения с использованием JPA без Spring-boot вам необходимо указать расположение классов сущностей (а также много другой информации) ,
Configuration configuration = new Configuration();
// many codes here
configuration.addPackage("my.package.for.entities");
Это заставляет hibernate сканировать определенные c пакеты для поиска ваших сущностей.
При использовании Spring-Boot вам не нужно писать все классы конфигурации. Но если ваши энтеиты (и это ваш случай) находятся в пакетах, отличных от @SpringBootApplication
, вам нужно указать пакеты для сканирования с аннотацией @EntityScan("my.package.for.entities")
. Действительно, эта аннотация интерпретируется классом JpaBaseConfiguration
для поиска ваших сущностей.
Аннотация @SpringBootApplication(scanBasePackages = "my.package")
здесь, чтобы искать ваши бобы весны, а не ваши сущности.
Если все в порядке, вы должны увидеть это в своем журнале:
Hibernate: удалить таблицу, если существует каскад пользователей Hibernate: создать таблицу пользователей (id_user varchar (255), не ноль, email varchar ( 255), имя_архии varchar (255), язык varchar (255), фамилия varchar (255), пароль varchar (255), rol varchar (255), первичный ключ (id_user))
Позвольте мне знаю.