나는 JPA를 사용하여 내 데이터베이스에 사용자와 그의 아이템 인 many-to-many 관계를 추가하는 함수를 가지고있다.JPA를 사용하여 데이터베이스에 값을 추가 할 때의 문제점
profilUser
항목
associationProfileUserItem
나는 사용자의 로그인 및 암호를 입력하고 나는 항목의 이름 목록을 선택 GUI에, 내가 가진 worte : 나는 다음과 같은 테이블이 함수는 그들의 이름에 의해 Item의 id를 회복한다 (association에 추가하기 위해). 문제는 사용자가 마지막으로 선택한 항목을 삽입하고 나머지는 무시한다는 것입니다.
내 코드 :
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();
}
, 내가 시도 솔루션하지만 동일한 문제가 지속 : 대신, 따라서
ProfilUser
기업에 대한 항목의 목록 및 profilUsers의 목록Item
엔티티에 있어야한다! – rym