私は@EntityとRecipe.javaオブジェクトがあります。休止状態 "の重複エントリー '1' キーのために 'をUK_2n5xttsxwbyc6x67l0x8phfwn'"
...
@OneToMany(cascade = CascadeType.ALL)
private List<Category> category;
...
その後@EntityとCategory.javaオブジェクト:
を...
@OneToOne(cascade = CascadeType.ALL)
private Name name;
...
のは、DBは、この(recipe_category表)のように見えることを言ってみましょう:
その後、次のコードが実行される(私はレシピにカテゴリを追加したい):
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '1' for key 'UK_2n5xttsxwbyc6x67l0x8phfwn'
は、だから何が解決策になる:私は次のエラーを取得していますrecipeRepository.save(recipe)
で
...
Recipe recipe = recipeRepository.findOne(recipeId);
Category ctg = categoryRepository.findOne(categoryId); // id=1
List<Category> categories = recipe.getCategory();
categories.add(ctg);
recipe.setCategory(categories);
recipeRepository.save(recipe);
...
この問題のために?
UPDATE:
レシピテーブル構造は次のようになります。
カテゴリテーブルの構造は次のようになります。
だから、問題はときので起こるようですrecipe.setCategory(categories);
がトリガーされ、ctg
をdbに保存しようとしましたが、すでに存在しています。私が望むのはdbに保存するのではなく(すでに 'カテゴリ'テーブルにあるため)、recipe_category
テーブルに新しい行を追加することです。
多分、カスケードで何かする必要がありますか?
私はそれが原因@OneToManyの誤用にだと思う、この答えは役に立つかもしれ:http://stackoverflow.com/a/ 15802642/7624937 – LLL
テーブルをどのように作成しますか?あなたはテーブル構造、作成スクリプト、または少なくとも例外の中で言及されているキーの定義を投稿できますか? – infiniteRefactor
@infiniteRefactor私はテーブルの構造に関するいくつかの詳細を質問に更新しました。だから問題は「創造」プロセスではなく、レシピに既存のカテゴリを追加したいときです。 – Cristian