2009-06-05 63 views
0

我有兩個豆的用戶和虛擬域中怎麼寫,刪除在Hibernate查詢多對多的關係

@Entity 
@Table(name = "tblUser") 

public class User implements Serializable { 
    private Long id; 
    private String username; 
private String deleteflag; 
    private Set<VirtualDomain> virtualdomainset; 
@Id 

@Column(name = "id") 
@GeneratedValue(strategy = GenerationType.AUTO) 
public Long getId() { 
     return id; 
} 

public void setId(Long id) { 
     this.id = id; 
} 

@Column(name = "username", length = 50, nullable = false) 
public String getUsername() { 
     return username; 
} 

public void setUsername(String username) { 
     this.username = username; 
} 
@Column(name = "deleteflag") 
    public String getDeleteflag() { 
     return deleteflag; 
    } 

    public void setDeleteflag(String deleteflag) { 
     this.deleteflag = deleteflag; 
    } 
    @ManyToMany(targetEntity = VirtualDomain.class, cascade = {CascadeType.PERSIST},fetch=FetchType.EAGER) 
    @JoinTable(name = "tblUserDomainRel", joinColumns = @JoinColumn(name = "userid"), inverseJoinColumns = @JoinColumn(name = "domainid")) 
    public Set<VirtualDomain> getVirtualdomainset() { 
     return virtualdomainset; 
    } 

public void setVirtualdomainset(Set<VirtualDomain> virtualdomainset) { 
    this.virtualdomainset = virtualdomainset; 
} 

} 



@Entity 
@Table(name = "tblVirtualDomain") 
public class VirtualDomain { 
    private Long id; 
    private String domainname; 
private String deleteflag; 
    private Set<User> userset; 
@Id 
@JoinColumn(name = "id") 
@GeneratedValue(strategy = GenerationType.AUTO) 
public Long getId() { 
     return id; 
} 

public void setId(Long id) { 
     this.id = id; 
} 

@Column(name = "domain_name") 
public String getDomainname() { 
     return domainname; 
} 

public void setDomainname(String domainname) { 


    this.domainname = domainname; 
} 
@Column(name = "deleteflag") 
    public String getDeleteflag() { 
     return deleteflag; 
    } 

    public void setDeleteflag(String deleteflag) { 
     this.deleteflag = deleteflag; 
    } 
@ManyToMany(cascade = {CascadeType.ALL},fetch=FetchType.EAGER, mappedBy = "virtualdomainset", targetEntity = User.class) 

public Set<User> getUserset() { 
     return userset; 
} 

public void setUserset(Set<User> userset) { 
     this.userset = userset; 
} 
} 

現在,當我刪除一些用戶我用它來設置,這意味着該數據仍保留在數據庫中的deleteflag 。 我的要求是,必須從tblUserDomainRel表中刪除設置了刪除標記的用戶,以便如何編寫該刪除查詢。

回答

0

剛從用戶集合中刪除的虛擬域中,並刪除對方的完整性

// on User 
public void removeVirtualDomain(VirtualDomain vd){ 
    virtualDomainset.remove(vd); 
    vd.getUserset().remove(this) 
} 

這將刪除的關係記錄。或者從所有虛擬域刪除用戶:

// on User 
public void removeFromAllVirtualDomains(){ 
    for(VirtualDomain vd : virtualdomainset){ 
     vd.getUserset().remove(this); 
    } 
    virtualDomainset.clear();   
} 
+0

我寫的第一個功能,並呼籲它,當我設置虛擬域中deleteflag,但它不工作giveing我顯示java.lang.NullPointerException的上線錯誤virtualDomainser.remove(VD)。 – Jugal 2009-06-05 13:37:50