n:m Relation (Many to Many)

  1. Legen Sie ein neues Entity Extra an und fügen Sie ein Attribut extra vom Typ String hinzu.
  2. Schließen Sie das Tab Extra und klicken Sie im folgenden Dialog auf Yes, um das Entity Extra zu speichern.
  3. Legen Sie ein neues Entity Car an und fügen Sie folgende Attribute hinzu:
    1. registration vom Typ Date 
    2. mileage vom Typ Integer
    3. kw vom Typ Integer
    4. price vom Typ Double
  4. Klicken Sie im Project Manager bei main-java > domain auf Extra.java und ziehen Sie es in den Entity-Editor auf  das Attributes-Feld.
  5. Wählen Sie im folgenden Dialog die Option Many to Many (n:m).
  6. Übernehmen Sie die Einstellung Bidirectional und den vorgeschlagenen Namen carextra für die Join Table, die in der Datenbank für die Abbildung der n:m Relation benötigt wird.
  7. Klicken Sie auf OK.
  8. Klicken Sie auf Speichern.
Ergebnis:
  • Entity Car - Das Entity Car wird um das Attribut extras vom Typ Set erweitert.



    @ManyToMany(fetch = FetchType.LAZY)
    @JoinTable(name = "carextra", joinColumns = @JoinColumn(name = "Car_id", referencedColumnName = "id", nullable = false, updatable = false), inverseJoinColumns = @JoinColumn(name = "Extra_id", referencedColumnName = "id", nullable = false, updatable = false))
    public Set<Extra> getExtras()
    {
    	return this.extras;
    }
    	public void setExtras(final Set<Extra> extras)
    {
    	this.extras = extras;
    }
  • Entity Extra - Das Entity Extra wird um das Attribut cars vom Typ Set erweitert.



    @ManyToMany(fetch = FetchType.LAZY)
    @JoinTable(name = "carextra", joinColumns = @JoinColumn(name = "Extra_id", referencedColumnName = "id", nullable = false, updatable = false), inverseJoinColumns = @JoinColumn(name = "Car_id", referencedColumnName = "id", nullable = false, updatable = false))
    public Set<Car> getCars()
    {
    	return cars;
    }
    
    public void setCars(Set<Car> cars)
    {
    	this.cars = cars;
    }

Hinweis:

  • Relation im Code per Annotation - Im Code wird die Relation in beiden Entities mit Hilfe der Annotation @ManyToMany definiert.
  • Plural - Bei n:m Relationen erzeugt RapidClipse den Namen des neuen Attributes wegen der besseren Lesbarkeit automatisch in Plural, z.B. cars.
  • Relation löschen - Um eine bidirektionale Relation korrekt zu löschen, müssen Sie die entsprechenden Attribute in beiden Entities löschen.

XDEV Software Corp. - One Embarcadero Center, San Francisco, CA 94111, US
Copyright © 2015. XDEV Software Corp. All rights reserved.