netbeans を使用してエンティティとファサードを生成しました。以下は、動作/更新する例です。
私はそれが機能する結合テーブルによって結合された2つのテーブルを持っています:
ユーザー
PK: ユーザーID
カテゴリー
PK: カテゴリ ID
ユーザー_カテゴリ
複合 PK: ユーザー ID | categoryID (他の列はありません)
両側の関係を考慮して、結合テーブルを更新する方法:
//set up user Categories
List<Category> categoryList = new ArrayList<Category>();
//get all the current categories for the current user
categoryList.addAll(user.getCategoryList());
//clear out user for that type (to reset)
for(Category c : categoryList){
tempUserList.clear();
tempUserList = c.getUserList();
tempUserList.remove(user);
c.setUserList(tempUserList);
categoryFacade.edit(c);
}
categoryList.clear();
//where selectedCategoryListString is a list of category names
for(String s : selectedCategoryListString){
categoryList.add(categoryFacade.findByCategoryName(s));
}
for(Category c : categoryList){
tempUserList.clear();
tempUserList = c.getUserList();
tempUserList.add(user);
c.setUserList(tempUserList);
categoryFacade.edit(c);
}
user.setCategoryList(categoryList);
userFacade.edit(user);
上記は機能し、関係の両側を処理します。私が立ち往生しているところは以下です。余分な「年」列があるため、「スキル」にはメソッド「.getUserList()」がありません。代わりに、「.getUserSkillList()」があります。上記のように、結合テーブルをどのように更新すればよいかわかりません。「年」列は毎回「」(空白)に設定されると想定できます。
以下: 問題のあるテーブル/関係:
ユーザー
ユーザーID
スキル
スキルID
ユーザースキル
ユーザー ID | スキルID | 年
重要なのは、ユーザーがユーザー ID を持っていることです。Skill には skillID があり、UserSkill には userID と skillID およびその他の列で構成される複合主キーがあります。年。