powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / не создаётся таблица "books" в БД MySQL при запуске приложения Spring boot
6 сообщений из 6, страница 1 из 1
не создаётся таблица "books" в БД MySQL при запуске приложения Spring boot
    #39724221
DrillDrive
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые программисты. У меня произошла одна непонятность со спрингом. Как бы я не конфигурировал в файле application.properties, все равно не создаётся таблица books в БД MySQL после того как спринг приложение запустилось. Я не знаю конкретно: как сделать так чтобы класс-сущность помеченная аннотацией Entity читалась во время запуска приложения спринга, а то в логах запуска spring boot об этом ни слова, чтобы там было что-то не так( ERROR-ы , к примеру ) и таблица не создаётся вообще на основе класса Book. Что же делать и как разрешить эту ситуацию ??

Такая ситуация в проекте, что класс сущности не находится в том же пакете, что и класс приложения, что тоже может влиять на поиск сущности и сопоставлением с базой самим Hibernate. Как вы видите я использую аннотацию @EntityScan в следующем классе и указываю в ней имя пакета, где есть эти сущности есть, чтобы их спринг нашёл в указанном пакете и инстанцировал:




SpringBootLearningApplication.java

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
package org.spring.learning;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;

@SpringBootApplication
@EntityScan(basePackages = {"org.spring.learning.core.ioc.chapter1"})
public class SpringBootLearningApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringBootLearningApplication.class, args);
	}
}




вот класс-сущность

Book.java


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
package org.spring.learning.core.ioc.chapter1;

import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Column;
import javax.persistence.GenerationType;
import javax.validation.constraints.Min;
import java.math.BigDecimal;

@Entity
@Table(name = "books")
public class Book {

    //auto increment unique id of book starting from a zero

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "book_id", updatable = false, nullable = false)
    private int id;

    @Column(name = "book_name", nullable = false)
    private String name;

    @Column(name = "author", length = 2178)
    private String author;

    //price must be greater than zero and rounded to two marks after a comma

    @Min(value = 0)
    @Column(name = "price", scale = 2)
    private BigDecimal price;

    public int getId(){
        return id;
    }

    public void setId(int id){
        this.id = id;
    }

    public void setName(String name){
        this.name = name;
    }

    public String getName(){
        return name;
    }

    public void setAuthor(String author){
        this.author = author;
    }

    public String getAuthor(){
        return author;
    }

    public void setPrice(BigDecimal price){
        this.price = price;
    }

    public BigDecimal getPrice(){
        return price;
    }

    public Book(){}
}




Я использую встроенный в спринг Hibernate. Как видно в моём pom.xml конфиге


pom.xml

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>org.spring.learning</groupId>
	<artifactId>spring-boot-learning</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>spring-boot-learning</name>
	<description>Learning project for Spring</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.6.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>11</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
				<scope>test</scope>
		</dependency>

        <!-- for using and managing Data from database over JPA ( Entities,
            Repositories, EntityManagers over Hibernate are built-in in the Spring)
        -->

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>

        <!-- MySQL connector J for database -->

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

		<dependency>
			<groupId>javax.xml.bind</groupId>
			<artifactId>jaxb-api</artifactId>
		</dependency>

		<dependency>
			<groupId>org.javassist</groupId>
			<artifactId>javassist</artifactId>
			<version>3.23.1-GA</version>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<wait>2000</wait>
					<maxAttempts>100</maxAttempts>
				</configuration>
			</plugin>
		</plugins>
	</build>


</project>



все конфигурации в приложении:

application.properties

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
spring.thymeleaf.prefix=classpath:/templates/

spring.datasource.url=jdbc:mysql://localhost:3306/testdatabase?useSSL=false
spring.datasource.username=root
spring.datasource.password=jack206*-*
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.jpa.show-sql=true
spring.jpa.hibernate.dll-auto=update
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

и структура моего проекта, чтобы вы могли видеть шаблон проекта и по нему тоже судить, где у меня ошибки:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
   
C:\USERS\ДМИТРИЙ\DESKTOP\MYPROJECTS\SPRING-BOOT-LEARNING
|   .gitignore
|   mvnw
|   mvnw.cmd
|   pom.xml
|
+---.idea
|   |   compiler.xml
|   |   encodings.xml
|   |   misc.xml
|   |   uiDesigner.xml
|   |   workspace.xml
|   |
|   \---dictionaries
|           .xml
|
+---.mvn
|   \---wrapper
|           maven-wrapper.jar
|           maven-wrapper.properties
|
+---src
|   +---main
|   |   +---java
|   |   |   \---org
|   |   |       \---spring
|   |   |           \---learning
|   |   |               |   SpringBootLearningApplication.java
|   |   |               |
|   |   |               \---core
|   |   |                   \---ioc
|   |   |                       \---chapter1
|   |   |                               Book.java
|   |   |
|   |   \---resources
|   |       |   application.properties
|   |       |
|   |       +---static
|   |       \---templates
|   |               index.html
|   |
|   \---test
|       +---contexts
|       \---java
|           \---org
|               \---spring
|                   \---learning
|                       |   SpringBootLearningApplicationTests.java
|                       |
|                       \---core
|                           \---ioc
|                                   Tests.java
|
\---target


Вот в общем-то это всё то, что касается моего проекта и происходящего в нём. Надеюсь вы мне скажете, как мне сделать так, чтобы при запуске моего проекта создалась таблица books на основе того класса Books, но при этом желательно без использования xml-конфигов. А то я совсем запутался. Заранее спасибо.
...
Рейтинг: 0 / 0
не создаётся таблица "books" в БД MySQL при запуске приложения Spring boot
    #39724230
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно сделать через анотацию в хибернете или через application.yml задав проперти
ddl-auto: create | update | validate | create-drop

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
---
spring:
  profiles: default
  jpa:
    database: POSTGRESQL
    database-platform: org.hibernate.dialect.PostgreSQLDialect
    show-sql: true
    generate-ddl: true
    hibernate: 
      ddl-auto:  create
      use-new-id-generator-mappings: true
  
  datasource:
   test-while-idle: true
   driver-class-name: org.postgresql.Driver
   username: sergeyvyatkin
   password:
   url: jdbc:postgresql://localhost:5432/postgres 
   tomcat:
     max-active: 30
     max-idle: 20
     min-idle: 10 



У меня есть вменяемый пример для Облакак можно его посмотреть здесь

Там есть даже sql скрип т, чтоб сразу залить в базу начальные значения.
...
Рейтинг: 0 / 0
не создаётся таблица "books" в БД MySQL при запуске приложения Spring boot
    #39727498
DrillDrive
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergunka, огромное спасибо за помощь. Благодаря вашему примеру с репозиторием, я решил проблему, создав бин через метод localContainerEntityManagerFactoryBean по вашему образцу метода и потом нашёл способ, обойтись без сканирования пакетов, где есть сущности, просто сохранив содержимое бина в поле класса конфигурации, помечая его аннотацией @Autowired.

только в этой строчке кода, где надо было задать проперти ddl-auto я задал update, так как это оповещает хибернейт, чтобы изменять структуру существующей базы данных при добавление в неё таблицы сущности вместо того, чтобы постоянно сбрасывать и создавать по новой.

часть вашего yml конфигаspring:
profiles: default
jpa:
database: POSTGRESQL
database-platform: org.hibernate.dialect.PostgreSQLDialect
show-sql: true
generate-ddl: true
hibernate:
ddl-auto: update
use-new-id-generator-mappings: true
...
Рейтинг: 0 / 0
не создаётся таблица "books" в БД MySQL при запуске приложения Spring boot
    #39727503
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spring.jpa.hibernate.ddl-auto=update
...
Рейтинг: 0 / 0
не создаётся таблица "books" в БД MySQL при запуске приложения Spring boot
    #39727504
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверинspring.jpa.hibernate.ddl-auto=update

если вы работаете в intelij idea, вам это свойство, которое написали неправильно, даже подсвечивают, как "непонятно, что это?".
...
Рейтинг: 0 / 0
не создаётся таблица "books" в БД MySQL при запуске приложения Spring boot
    #39727728
DrillDrive
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин, моя ошибка. Спасибо что меня поправили. Я просто в попыхах копировал конфиг свой )
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / не создаётся таблица "books" в БД MySQL при запуске приложения Spring boot
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]