JPA2.0:删除OneToMany RelationShip中的实体
|
如何删除OneToMany关系中的实体. @Entity
@NamedQueries({
@NamedQuery(name="User.findByUserNamePassword",query="select c from User c where c.userName = :userName AND c.password = :password")
})
@Table(name=""USER"")
public class User implements Serializable {
@OneToMany(mappedBy="user",cascade=CascadeType.ALL,orphanRemove=true)
private List<Profession> professions;
public List<Profession> getProfessions() {
return professions;
}
public void setProfessions(List<Profession> professions) {
this.professions = professions;
}
public void addProfession(Profession profession){
if(this.professions == null){
this.professions = new ArrayList<Profession>();
}
this.professions.add(profession);
profession.setUser(this);
}
public void removeProfession(Profession profession){
if(this.professions != null){
professions.remove(profession);
profession.setUser(null);
}
}
}
内部职业实体 @Entity
public class Profession implements Serializable {
@ManyToOne
@JoinColumn(name="UserId",nullable=false)
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
然后在我的EJB里面我有这个 @Stateless
@LocalBean
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class ScholarEJB{
/**
* Add a profession to a target user
* @param user
* @param profession
*/
public void addProfession(User user,Profession profession){
//Put the user in a managed state. It is important to do this before
//adding a new profession onto user
user = find(User.class,user.getId());
user.addProfession(profession);
this.create(user); //This is persist action
}
public void removeProfession(User user,user.getId());
user.remove(user);
this.update(user); //merge action
//this.create(user) //also try this as well,but it does not work
}
}
现在addProfession工作得很漂亮,但removeProfession不起作用.不知道为什么?请帮忙.我需要驱逐缓存吗? 解决方法如果职业只是这种关系的一部分,那么你可以保证当一个职业从用户的集合中删除时,它也将通过在关系的OneToMany一侧打开orphanRemoval从数据库中删除.@OneToMany(mappedBy="user",orphanRemoval=true) private List<Profession> professions; 这就是JPA 2.0规范所述的内容 JPA 2.0规范指出了这一点
(编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
