0
如果我有這樣的JPA - 更新童車refrence於母公司
public class Company implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="COMPANY_ID", updatable = false)
private int companyId;
//bi-directional many-to-one association to User
@OneToMany(mappedBy="company")
private List<User> users;
}
父母,這樣
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="USER_ID", updatable=false)
private int userId;
private String username;
//bi-directional many-to-one association to Company
@ManyToOne
@JoinColumn(name="COMPANY_ID")
private Company company;
}
然後在我的JAX-RS REST孩子叫我從檢索用戶公司A中的數據庫,我想將該用戶更改爲公司B.下面是我所擁有的
@POST
@Path("updateUserCompany")
@Produces("application/json")
public Response updateUserCompany() {
//this get the company I want to set the user to
Company company = entityManager.createNamedQuery("Company.getCompanyByName", Company.class)
.setParameter("companyName", "CompanyB")
.getSingleResult();
//this gets the user i want to change
User user = entityManager.createNamedQuery("User.getUserById", User.class).setParameter("userId", 1).getSingleResult();
user.setCompany(company);
entityManager.persist(user);
entityManager.flush();
但是用戶沒有更新D B?我如何在數據庫中更新它?
感謝
1)您的JAX-RS REST類EJB是什麼?因爲如果這個代碼不是在內部交易中執行的話。用'javax.transaction.Transactional'註釋'updateUserCompany()'方法。 2)使用'entityManager.merge()'方法,而不是使用persist來持久化新實體(插入行) – Artem