2009-06-05 4 views
0

j'ai utilisateur deux haricots et virtualdomaincomment écrire supprimer requête en veille prolongée pour plusieurs à plusieurs

@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; 
} 
} 

Maintenant, lorsque je supprime un certain utilisateur j'utiliser pour définir la deleteflag ce qui signifie que les données restent dans la base de données . Mon exigence est que l'utilisateur dont l'indicateur de suppression est défini doit être supprimé de la table tblUserDomainRel afin de savoir comment écrire cette requête de suppression.

Répondre

0

enlèverait juste VirtualDomain de la collection de l'utilisateur et retirer l'autre côté pour être complet

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

cela va supprimer l'enregistrement de la relation. Ou pour supprimer un utilisateur de tous les domaines virtuels:

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

j'ai écrit la première fonction et l'a appelé quand je mettais la deleteflag de VirtualDomain, mais il ne fonctionne pas me giveing ​​l'erreur de java.lang.NullPointerException en ligne virtualDomainser.remove (vd). – Jugal

+0

ce n'est pas grand chose à faire, mais je suppose que le vitualDomainset est nul. –

Questions connexes