Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用mysql休眠覆盖pk_Java_Mysql_Spring_Hibernate - Fatal编程技术网

Java 用mysql休眠覆盖pk

Java 用mysql休眠覆盖pk,java,mysql,spring,hibernate,Java,Mysql,Spring,Hibernate,嗯,我第一次使用Hibernate,出乎意料的是,它可以正常工作。除了一件事:已经插入pk的插入会覆盖阻止它的记录 这是我的简单代码: @Controller public class SimpleController { @Autowired UserRepository userRepository; @GetMapping("/mainPage") public String viewMainPage(){ return "mainPag

嗯,我第一次使用Hibernate,出乎意料的是,它可以正常工作。除了一件事:已经插入pk的插入会覆盖阻止它的记录

这是我的简单代码:

@Controller
public class SimpleController {

    @Autowired
    UserRepository userRepository;

    @GetMapping("/mainPage")
    public String viewMainPage(){
        return "mainPage";
    }

    @GetMapping("/nuovo-utente")
    public String viewInserisciUtente(Model model){
        model.addAttribute("nuovoUtente", new Utente());
        return "nuovo-utente";
    }

    @PostMapping("/nuovo-utente")
    public String memorizzaUtente(@ModelAttribute Utente utente){
        userRepository.save(utente);
        return "output";
    }
}

@Entity
public class Utente {
    @Id
    private int id;

    private String citta=null;
    private String genere=null;
    private String data_nascita=null;

    public int getId() {
        return id;
    }

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

    public String getCitta() {
        return citta;
    }

    public void setCitta(String citta) {
        this.citta = citta;
    }

    public String getGenere() {
        return genere;
    }

    public void setGenere(String genere) {
        this.genere = genere;
    }

    public String getData_nascita() {
        return data_nascita;
    }

    public void setData_nascita(String data_nascita) {
        this.data_nascita = data_nascita;
    }
}
任何帮助都将不胜感激

编辑:我添加了实体类来帮助您理解我的问题。希望这会有所帮助

谢谢大家

如果您查看文档,那么我们没有更新方法,但只有保存方法,用于添加或更新现有记录


在您的情况下,您可能已经更新了一个实体(其Id字段除外)并尝试保存该实体。因此,crudepository将更新给定Id的现有值,因为它已经存在。

尝试将Id生成策略添加到
Id
字段

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;

UserRepository中的保存方法是什么?UserRepository是一个粗糙的存储接口。这是他的方法。这是代码:public interface UserRepository extends crudepository{}@Pikappa您能显示实体类吗?当然,就是这样:我刚刚编辑了我的post,那么我应该使用instaed做什么呢?@Pikappa如果您想向表中添加新行。然后,更改Id值,它将添加新行。是的,当然,但我想完全防止覆盖。如果我插入一个已经插入的Id(比如在workbench上插入一个简单的Id)会出现错误@Pikappa那么,为什么不先使用findById,然后查看它是否已经存在?