Метод сохранения CrudRepository не сохраняет в БД - PullRequest
0 голосов
/ 23 марта 2020

У меня очень странное поведение. Я создал репозиторий, который расширяет CrudRepository. Все методы по умолчанию работает нормально, кроме метода сохранения. Это не сохраняет новую сущность в БД. Мне нужно сохранить новую сущность с идентификатором, который я предоставляю. Если я предоставляю существующий идентификатор в БД - тогда успешно сохраняю обновления этой сущности, но если я устанавливаю новый идентификатор - тогда ничего, даже ошибки. Мой репо:

import com.xxx.yyy.entities.Game;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface GameRepository extends CrudRepository<Game, Integer> {}

Моя сущность:

import org.springframework.data.annotation.Id;
import org.springframework.data.relational.core.mapping.Table;

import java.util.Objects;

@Table("game_info")
public class Game {

    @Id
    private int id;
    private String name;
    private int wager;

    setters and getters

Мой сервис:

public void addGame() {

    Game g = new Game();
    g.setId(10);
    g.setName("Name");
    g.saveWager(22);

    gameRepository.save(game);
}

Мой стол:

CREATE TABLE `game_info`
(
    `id`        INT UNSIGNED NOT NULL COMMENT 'Unique identifier of the Game',
    `name`      VARCHAR(32)  NOT NULL COMMENT 'Name of the Game',
    `wager`     INT          NOT NULL COMMENT 'Wager of the Game',
    PRIMARY KEY (`id`),
    UNIQUE (`name`)
);

1 Ответ

0 голосов
/ 23 марта 2020

Похоже, что нет способа сохранить сущность с установленным идентификатором. Я должен написать новый метод вставки, как это:

@Modifying
@Query("INSERT INTO `game_info` (`id`, `name`, `wager`) VALUES (:id, :name, :wager)")
void addGame(@Param("id") int id, @Param("name") String name, @Param("wager") Integer wager);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...