Как избавиться от автоматической установки нового стола - PullRequest
0 голосов
/ 28 октября 2019

Проблема: новая таблица создается один раз, когда я делаю пост-запрос через консоль bash. Остальные запросы переходят на новую таблицу. Чем ему не нравятся те базы данных, которые есть в наличии. Как я понимаю - они просто не знают, но я не знаю, как правильно это направить. Хотя все переменные также имеют имена.

Обнаружена проблема, возникшая из-за аннотации Entity в классе Message. Подскажите, пожалуйста, как сделать так, чтобы он был добавлен к существующей таблице, пробовал @Table(name = "ApiTable") к существующей, и он генерирует новую таблицу api_table. Также не совсем понимаю, что нужно добавить / изменить, чтобы принимать запросы json post.

Приложение

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;

@SpringBootApplication
@EnableJpaRepositories("com.example.api")
public class Application {

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

MainController

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller    
@RequestMapping(path="/demo") /
public class MainController {
    @Autowired
    private UserRepository TestApi;

    @PostMapping(path="/add")
    public @ResponseBody String addNewUser (@RequestParam String name
            , @RequestParam String email) {
        Message n = new Message();
        n.setName(name);
        n.setEmail(email);
        TestApi.save(n);
        return "Saved";
    }

    @GetMapping(path="/all")
    public @ResponseBody Iterable<Message> getAllUsers() {
        return TestApi.findAll();
    }
}

Сообщение

import javax.persistence.*;

@Entity
public class Message {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer id;
    private String name;
    private String email;

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

UserRepository

import org.springframework.data.repository.CrudRepository;

public interface UserRepository extends CrudRepository<Message, Integer> {

}

application.properties

spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost/Test?useUnicode=true&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root

1 Ответ

0 голосов
/ 30 октября 2019

Кажется, проблема в стратегии именования Spring Boot по умолчанию, которую вам придется заменить. Стратегия именования Spring Boot по умолчанию теперь включает преобразование camelCase в snake_case, поэтому вам нужно выбрать другой (или реализовать свой собственный).

Вот еще немного информации по теме: Таблица изменения стратегии именования Hibernateимена

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...