CrudRepository保存方法不会在数据库中保存任何内容

时间:2020-03-23 11:04:06

标签: java mysql spring spring-data

我的行为很奇怪。我创建了扩展CrudRepository的存储库。除保存方法外,所有默认方法都可以正常工作。它不会将新实体保存到数据库。我需要使用提供的ID保存新实体。如果我在db中提供了现有ID,则保存成功更新了该实体,但是如果我设置了新ID,则什么也没有,甚至没有错误。 我的仓库:

val path = "android.resource://" + packageName + "/" + R.raw.my_video
videoView.setVideoURI(Uri.parse(path))
videoView.setZOrderOnTop(true)
videoView.seekTo(100)
videoView.start()

videoView.setOnPreparedListener { mp ->
   videoView.setZOrderOnTop(false)
   mp.isLooping = true // Loops the video 
}

我的实体:

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);
}

1 个答案:

答案 0 :(得分:0)

它似乎无法保存具有已设置ID的实体。我必须像这样编写新的插入方法:

@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);