hibernate多对多单向关联,删除问题

来源:互联网  时间:2016/8/9 20:45:35

关于网友提出的“ hibernate多对多单向关联,删除问题”问题疑问,本网通过在网上对“ hibernate多对多单向关联,删除问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: hibernate多对多单向关联,删除问题
描述:

大家帮帮忙,我已经是黔驴技穷了。
问题是这样的
现有的系统中有两个表,一个叫veranstaltung(课程),另一个叫benutzer(老师),他们之间的关系时多对多的单向关联,中间表是betreuer。现在的问题是,如果我删除benutzer中的一条记录时,相应的中间表中的记录被删除。可是如果删除veranstaltung中的记录,对应在中间表中的记录删不了。造成了bug。
我现在要做到的是,删除veranstaltung中的一条记录,相应的中间表中的记录也删除。大家给点意见吧。
代码:
*******************************benutzer.java************************
/*     */ package beans;
/*     */ 
/*     */ import java.util.Iterator;
/*     */ import java.util.SortedSet;
/*     */ import java.util.TreeSet;
/*     */ import util.Encoder;
/*     */ 
/*     */ public class Benutzer
/*     */ {
/*     */   private Long bid;
/*     */   private String benutzername;
/*     */   private String passwort;
/*     */   private Boolean admin;
/*     */   private SortedSet veranstaltungen;
/*     */ 
/*     */   public Benutzer()
/*     */   {
/*  17 */     this.veranstaltungen = new TreeSet();
/*     */   }
/*     */ 
/*     */   public boolean checkUser(String username, String password)
/*     */   {
/*  28 */     String SHAPass = Encoder.encode(password);
/*     */ 
/*  30 */     return ((username.equals(this.benutzername)) && (SHAPass.equals(this.passwort.toLowerCase())));
/*     */   }
/*     */ 
/*     */   public boolean checkUserHash(String username, String password)
/*     */   {
/*  42 */     return ((username.equals(this.benutzername)) && (password.equals(this.passwort.toLowerCase())));
/*     */   }
/*     */ 
/*     */   public boolean isBetreuer(Long id)
/*     */   {
/*  53 */     if (this.admin.booleanValue()) {
/*  54 */       return true;
/*     */     }
/*     */ 
/*  57 */     for (Iterator it = this.veranstaltungen.iterator(); it.hasNext(); ) {
/*  58 */       Veranstaltung v = (Veranstaltung)it.next();
/*     */ 
/*  60 */       if (id.equals(v.getVid())) {
/*  61 */         return true;
/*     */       }
/*     */     }
/*     */ 
/*  65 */     return false;
/*     */   }
/*     */ 
/*     */   public String getBenutzername()
/*     */   {
/*  72 */     return this.benutzername;
/*     */   }
/*     */ 
/*     */   public void setBenutzername(String benutzername)
/*     */   {
/*  80 */     this.benutzername = benutzername;
/*     */   }
/*     */ 
/*     */   public String getPasswort()
/*     */   {
/*  88 */     return this.passwort;
/*     */   }
/*     */ 
/*     */   public void setPasswordHash(String passwort) {
/*  92 */     String hash = Encoder.encode(passwort);
/*  93 */     this.passwort = hash;
/*     */   }
/*     */ 
/*     */   public void setPasswort(String passwort)
/*     */   {
/* 100 */     this.passwort = passwort;
/*     */   }
/*     */ 
/*     */   public Long getBid()
/*     */   {
/* 108 */     return this.bid;
/*     */   }
/*     */ 
/*     */   private void setBid(Long bid)
/*     */   {
/* 116 */     this.bid = bid;
/*     */   }
/*     */ 
/*     */   public Boolean getAdmin()
/*     */   {
/* 123 */     return this.admin;
/*     */   }
/*     */ 
/*     */   public void setAdmin(Boolean admin)
/*     */   {
/* 130 */     this.admin = admin;
/*     */   }
/*     */ 
/*     */   public SortedSet getVeranstaltungen()
/*     */   {
/* 137 */     return this.veranstaltungen;
/*     */   }
/*     */ 
/*     */   public void setVeranstaltungen(SortedSet veranstaltungen)
/*     */   {
/* 144 */     this.veranstaltungen = veranstaltungen;
/*     */   }
/*     */ }
*********************************************************************************
*******************benutzer.hbm.xml**************

        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

    
        
            
        
        
        
        


        
        
    
    

**************************************************************************
***************veranstaltung.java*************************************
/*    */ package beans;
/*    */ 
/*    */ import java.util.LinkedHashSet;
/*    */ import java.util.Set;
/*    */ 
/*    */ public class Veranstaltung
/*    */   implements Comparable
/*    */ {
/*    */   private Long vid;
/*    */   private String name;
/*    */   private Gruppe gruppe;
/* 11 */   private Set termine = new LinkedHashSet();
/*    */ 
/*    */   public int compareTo(Veranstaltung v)
/*    */   {
/* 18 */     return this.name.compareTo(v.getName());
/*    */   }
/*    */ 
/*    */   public Long getVid()
/*    */   {
/* 25 */     return this.vid;
/*    */   }
/*    */ 
/*    */   private void setVid(Long vid)
/*    */   {
/* 32 */     this.vid = vid;
/*    */   }
/*    */ 
/*    */   public String getName()
/*    */   {
/* 39 */     return this.name;
/*    */   }
/*    */ 
/*    */   public void setName(String name)
/*    */   {
/* 46 */     this.name = name;
/*    */   }
/*    */ 
/*    */   public Set getTermine()
/*    */   {
/* 53 */     return this.termine;
/*    */   }
/*    */ 
/*    */   public void setTermine(Set termine)
/*    */   {
/* 60 */     this.termine = termine;
/*    */   }
/*    */ 
/*    */   public Gruppe getGruppe()
/*    */   {
/* 67 */     return this.gruppe;
/*    */   }
/*    */ 
/*    */   public void setGruppe(Gruppe gruppe)
/*    */   {
/* 74 */     this.gruppe = gruppe;
/*    */   }
/*    */ 
/*    */   public String toString() {
/* 78 */     return "[Veranstaltung: " + this.name + ", ID: " + this.vid + ", " + this.termine.size() + " Termine]";
/*    */   }
/*    */ }
*****************************************************************************
*******************veranstaltung.hbm.xml**********************************

        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

    
        
            
        
        
        
        




    

********************************************************


解决方案1:

veranstaltung.hbm.xml  benutzer.hbm.xml
中的关系属性列  弄成一样 

  
  
  -----  2个的  外键位置 和名称换下 试试!

上一篇Flex如何接收java返回的对象,并和dataGrid进行绑定
下一篇多文件上传时,是否有顺序问题?
明星图片
相关文章
《 hibernate多对多单向关联,删除问题》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)