假設產品可以有一個賬戶列表,產品和賬戶之間的關係是@OneToMany
。在產品類中,我創建了一個存儲帳戶的Set界面。 接下來,我製作了一個使用Struts 2向賬戶添加賬戶的方法。每次運行此方法時,HashSet
都會重置,並且將從中刪除對象。在下面,你可以找到DefaultProduct
類。通過@OneToMany關係映射兩個實體在Struts2操作中失敗
@Entity
public class DefaultProduct {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false)
Long id;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "product", targetEntity = DefaultAccount.class)
private final Set<Account> accounts = new HashSet<Account>();
public DefaultProduct(Long id, Set<Account> accounts) {
Assert.notEmpty(accounts);
this.accounts.addAll(accounts);
}
// Getters
}
撐杆2動作方法調用從service
類,它是依賴使用Spring框架注入editProduct()
方法。 service
類沒有任何問題,因爲這已經過精確測試。下面你可以找到service
類和Struts 2的方法
服務:
@Transactional
public void editProduct(Product product) {
entityManager.merge(product);
}
的Struts 2:
public String addAccount(){
Set<Account> accounts = new HashSet<Account>();
accounts.add(coreService.findAccountById(accountId));
coreService.editProduct(new DefaultProduct(id, accounts));
System.out.println(coreService.findProductById(id).getAccounts().size()); //Size-check
return SUCCESS;
}
注:產品是DefaultProduct
類實現的接口。
非常感謝
您並未將帳戶添加到產品。 –
我該怎麼做羅馬?產品構造函數接受傳遞的Set並將其添加到現有的..有什麼問題嗎? –
是的,但你沒有創建任何產品。 –