sql >> データベース >  >> RDS >> PostgreSQL

SpringMVCでIDを自動生成

    idを自動的に生成する場合 、nullであっても、提供しないでください 。したがって、idを削除します addProduectから 方法:

    @Override
    public void addProduct(String description, double price, Date date) {
        jdbcTemplate.update("INSERT INTO products values(?, ?, ?)", description, price, date);
    }
    

    また、idを作成します フィールドauto-increment 、この質問 のように 。

    または、addProductを変更します メソッドを使用してEntityManager#persistを使用します 方法:

    @Override
    public void addProduct(Product product) {
        entityManager.persist(product);
    }
    

    エラーについて:

    フォームはidを受け取らないため クライアントからの値、/newproduct エンドポイントにはProductがあります nullを使用 そのidとして 値:

    @RequestMapping(value = "/newproduct", method = RequestMethod.POST)
    public ModelAndView submitForm(@ModelAttribute("product") Product product) { ... }
    

    次に、このnullを渡します addProductへのパラメータとしての値 方法:

    prDao.addProduct(product.getId(), ...)
    

    そして最後にaddProduct そのnullを保存しようとします 主キーの値としての値 、 Non-Null 制約があるため、そのエラーが発生します。

    また、エンティティを使用する クライアントとのコミュニケーション手段としてのオブジェクト。 Product 、は良い習慣ではありません。フォームやDTOなどの補助的な抽象化を定義し、それらをフォームの処理や応答の組み立てに使用してみてください。




    1. MYSQLは、mysqlimportを使用してフォルダからcsvファイルを自動的に挿入します

    2. jpgbmppng拡張子画像からGETURLPHPmysqlの場合

    3. SQL Serverでカスケードを使用するのはいつ/なぜですか?

    4. postgisでポリゴン内のすべてのポイントを見つける方法は?