エンティティのリストを取得し、さらに値を追加してデータベースに永続化しようとしています...これを行うにはいくつかの問題が発生しています...これまでのところ...
Provider prov = emf.find(Provider.class, new Long(ID));
このエンティティには、追加しようとしている多対多の関係があります
List<Organization> orgList = new ArrayList<Organization>();
...
orgList = prov.getOrganizationList();
これで、そのエンティティに関連付けられたエンティティのリストができました。
追加するいくつかのエンティティを検索し、それらを orgList に配置します...
List<Organization> updatedListofOrgss = emf.createNamedQuery("getOrganizationByOrganizationIds").setParameter("organizationIds", AddThese).getResultList();
List<Organization> deleteListOfOrgs = emf.createNamedQuery("getOrganizationByOrganizationIds").setParameter("organizationIds", DeleteThese).getResultList();
orgList.addAll(updatedListofOrgss);
orgList.removeAll(deleteListOfOrgs);
ご覧のとおり、削除する削除ノードのリストもあります。このような操作で persist を呼び出す必要はなく、JPA は自動的に保持されるとどこかで聞きました。まあ、それはそのようには機能しないようです。この方法で永続化できますか?それとも、リンク テーブル エンティティを調べて、これらの値をそのように追加する必要がありますか?
public class Provider implements Serializable {
@Id
@Column(name="RESOURCE_ID")
private long resourceId;
...
@ManyToMany(fetch=FetchType.EAGER)
@JoinTable(name="DIST_LIST_PERMISSION",
joinColumns=@JoinColumn(name="RESOURCE_ID"),
inverseJoinColumns=@JoinColumn(name="ORGANIZATION_ID"))
private List<Organization> organizationList;
...//getters and setters.
}
組織と事業者をつなぐリンクテーブル…
public class DistListPermission implements Serializable {
@Id
@Column(name="DIST_LIST_PERMISSION_ID")
private long distListPermissionId;
@Column(name="ORGANIZATION_ID")
private BigDecimal organizationId;
@Column(name="RESOURCE_ID")
private Long resourceId;
}