He escrito una aplicación de arranque de primavera. Quiero configurar los datos iniciales de la base de datos con un archivo data.sql.
src/main/resources/application.properties
spring.jpa.hibernate.ddl-auto=create spring.datasource.url=${JDBC_DATABASE_URL} spring.datasource.driver-class-name=org.postgresql.Driver spring.datasource.initialization-mode=always spring.jpa.show-sql=truesrc/main/java/nombre_paquete/modelo/mi_entidad
@Entity @Table(name = "user_entry") public class User { @Id @Column(nullable = false, length = 50) private String userId; @Column(nullable = false, length = 50) private String firstName; @Column(nullable = false, length = 50) private String lastName; @Column(nullable = false, length = 50) private String password; @OneToMany(mappedBy = "owner", cascade = CascadeType.ALL, orphanRemoval = true) private Set<SongList> songLists; public User() { } ... }src/main/resources/data.sql
insert into user_entry (user_id, first_name, last_name, password) values ('MaMu', 'Maxime', 'Muster', 'pass1234');Sin embargo, parece que los datos no se cargan en la base de datos durante la implementación.
editar:
agregar spring.datasource.data= classpath:/data.sql en mi src/main/resources/application.properties resolvió el problema.
Tenemos estas propiedades para crear e insertar los registros en una tabla. Como solo necesita insertar los registros, puede evitar spring.datasource.schema
spring.datasource.schema= # Schema (DDL) script resource references. spring.datasource.data= # Data (DML) script resource references.Establecer archivo SQL
spring.datasource.data= classpath:/data.sqlNotas:
spring.datasource.data , tenemos que usar spring.datasource.schemaspring.datasource.initialization-mode=alwaysspring.jpa.generate-ddl=true ya que establecerá hibernate.hbm2ddl.auto=update detrás de escena e invalidará spring.jpa.hibernate.ddl-auto=createEn caso de que su Entidad no sea considerada, agregue la siguiente anotación en su clase principal Springboot justo debajo de su anotación @SpringBootApplication ,
@EntityScan(basePackages = {"package_name.model.my_entity"} Además, después de eliminar la etiqueta @Id de Entity y funcionó para mí (no estoy seguro de que pueda ser el motivo).