私は自分のデータベースに(JPAを使用して)ユーザーとそのアイテム、多対多関係を追加する機能を持っています。JPAを使用してデータベースに値を追加する際の問題
profilUser
項目
associationProfileUserItem
私は、ユーザーのログイン名とパスワードを入力し、私はアイテムの名前のリストを選択するGUI上の、私が持っているworte:私は、次のテーブルを持っていますそれらの名前でItemのIDを回復する(アソシエーションに追加する)。 問題は、関数がユーザーのために選択された最後の項目を挿入し、残りを無視することです。
マイコード:
public void addProfilUser()
{
try{
EntityTransaction entr=em.getTransaction();
entr.begin();
AssociationItemProfilPK ItemprofilPk=new AssociationItemProfilPK();
AssociationItemProfil Itemprofil=new AssociationItemProfil();
ProfilUser user=new ProfilUser();
user.setLogin(login);
user.setPassword(password);
em.persist(user);
for (Integer val : getListidItemByItemName())
{
ItemprofilPk.setItemId(val);
ItemprofilPk.setProfilId(user.getProfilUserId());
Itemprofil.setAssociationItemProfilPK(ItemprofilPk);
}
em.persist(Itemprofil);
entr.commit();
}
catch (Exception e)
{
System.out.println(e.getMessage());
System.out.println("Failed");
}
finally {
em.close();
emf.close();
}
}
public ArrayList<Integer> getListidItemByItemName()
{
try{
EntityTransaction entityTrans=emm.getTransaction();
entityTrans.begin();
for (String val : listItem)
{
System.out.println("my values"+val);
javax.persistence.Query multipleSelect= em.createQuery("SELECT i.ItemId FROM Item i WHERE i.ItemName IN (:w)");
multipleSelect.setParameter("w", val);
List ItemId = new LinkedList();
ItemId= multipleSelect.getResultList();
listIdItem = new ArrayList(ItemId);
}
entityTrans.commit();
System.out.println("Id for given item name"+listIdItem);
return listIdItem;
}
catch(Exception e)
{
e.printStackTrace();
}
、私はあなたのソリューションを試してみましたが、同じ問題が持続します! – rym