Annotation "ID: Primary Key über mehrere Spalten möglic

Status
Nicht offen für weitere Antworten.

Angel4585

Bekanntes Mitglied
Hallo,

in der Schule hab ich gelernt, dass man einen Primary Key über mehrere Spalten machen kann.
Geht das hier auch?

@Id kann ich ja eigentlich nur auf einen Wert machen.
Ich hab jetz aber ne Verknüpfungstabelle in die ich Werte aufnehmen will

Also so:

Tabelle: Personen
id
name


Tabelle: Benutzung
personenid
gegenstandid
anzahlbenutzungen


Tabelle: Gegenstand
id
name

wenn ich Benutzung als eigene Klasse mach muss ich ne ID angeben, aber ich kann die nich über die beiden id felder machen, möchte aber auch keine extra ID Spalte einfügen. Also wie mach ich das am Besten?
 
G

Guest

Gast
Verzichte auf das "anzahlbenutzungen" (kriegst du über die Grösse der Collections und/oder mit Named Queries heraus)
und mache ein ManyToMany zwischen Person und Gegenstand.
z.B.
Code:
@Entity
class Person {
   @Id
   @GeneratedValue(strategy = GenerationType.AUTO)
   @Column(name="ID", updateable=false)
   private Long id;

   @ManyToMany
   @JoinTable( name = "GEGENSTAND_BENUTZUNG", 
      joinColumns = @JoinColumn( name = "PERSONID", referencedColumnName = "ID" ), 
      inverseJoinColumns = @JoinColumn( name = "GEGENSTANDID", referencedColumnName = "ID" )
   )
   private Set<Gegenstand> gegenstaende = new HashSet<Gegenstand>();

   ...
}

@Entity
class Gegenstand {
   @Id
   @GeneratedValue(strategy = GenerationType.AUTO)
   @Column(name="ID", updateable=false)
   private Long id;

   @ManyToMany
   @JoinTable( name = "GEGENSTAND_BENUTZUNG", 
      joinColumns = @JoinColumn( name = "GEGENSTANDID", referencedColumnName = "ID" ), 
      inverseJoinColumns = @JoinColumn( name = "PERSONID", referencedColumnName = "ID" )
   )
   private Set<Person> personen = new HashSet<Person>();

   ...
}
 

Angel4585

Bekanntes Mitglied
ne das anzahlBenutzung sagt mir wie oft eine Person einen Gegenstand benutzt hat, darauf kann ich nicht verzichten.
Ausserdem sollen da noch mehr Werte rein.
 
G

Guest

Gast
Angel4585 hat gesagt.:
ne das anzahlBenutzung sagt mir wie oft eine Person einen Gegenstand benutzt hat, darauf kann ich nicht verzichten.
Ausserdem sollen da noch mehr Werte rein.
Dann bleibt noch ein Map mit Gegenstand als Key und einem Embedable als Value.

z.B.
Code:
@CollectionOfElements 
@JoinTable(name = "GEGENSTAND_BENUTZUNG", joinColumns = @JoinColumn(name = "ID"))  // das ist die Id des aktuellen Datensatzes.
@MapKey(columns = @Column(name="GEGENSTANDID")) 
Map<Gegenstand, Benutzung> gegenstaende = new HashMap<Gegenstand, Benutzung>();


...

@Embedable
class Benutzung {

   ... was auch immer

}

Siehe auch http://www.java-forum.org/de/viewtopic.php?t=62152
Da habe ich mal ein vergleichbares Beispiel beschrieben.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Hibernat Annotation in Interfaces Allgemeines EE 7
D Websocket nach Decoder Annotation nicht mehr erreichbar Allgemeines EE 0
M EE6+EJB+JavaLib: Error in annotation processing: java.lang.NoClassDefFoundError Allgemeines EE 4
T Anfängerfrage: h:selectOneMenu (JSF 2.0), @ManyToOne Annotation in Entity (JPA 2.0) Allgemeines EE 2
M [EJB 3.0] @EJB Annotation? Allgemeines EE 4
G [EJB 3.0] Primary Key String hochzählen Allgemeines EE 3
O Primary Key Vergabe Allgemeines EE 16
F Spring Microservices...Lesen und Schreiben über ein Microservice ? Allgemeines EE 4
E Wie kann ich über einen Suchfeld in Java Server Pages nach Datenbankinhalten suchen? Allgemeines EE 11
L Webseiten Formulare über Java Oberfläche ausfüllen? Allgemeines EE 2
F JSP Problem mit Datenbankanbindung über Glassfishserver Allgemeines EE 4
S Pfad-Zugriff über Servlet-init() Allgemeines EE 2
musiKk Datenbankzugriffe über JAX-WS und JPA Allgemeines EE 6
P Können abstrakte Klassen über WSDL versendet werden? Allgemeines EE 3
A File Donwlad über jsp Allgemeines EE 6
W Übliche Art "lokale" Parameter an Servlets zu über Allgemeines EE 2
N Metadaten (Spaltenüberschrift) über EntityBean auslesen? Allgemeines EE 3
S oracle db über jboss in jsp Allgemeines EE 19
D DB-Anbindung über das Internet Allgemeines EE 43
M Einbindung von fremder Klasse über Skriplet Allgemeines EE 4
G Upload über JSP --> byte[] ? Allgemeines EE 5
R JBoss über lokale IP ansprechen Allgemeines EE 16
M Mehrere Webanwendungen über einen Webserver? Allgemeines EE 2
M Jsf-Seitenaufteilung über div! Allgemeines EE 2
B Spring: Verz. "images" in Web-INF über URL verfügb Allgemeines EE 5
C HashMap über Webservice übertragen Allgemeines EE 2
W servlet über https Allgemeines EE 2
D Servlet Problem über Server Allgemeines EE 26
B JSF - Servlet mit Parametern über einen Link öffnen Allgemeines EE 3
H j_security_check über requestdispatcher Allgemeines EE 3
N selectOneMenu - items über ajax Allgemeines EE 3
E bei struts inhalte über mehrere seite verteilen Allgemeines EE 6
S Best-Practice? Daten über Tier-Grenzen hinweg? Allgemeines EE 2
P E-mails alias über Servlets einrichten bei Strato- Allgemeines EE 16
F Package beim Cookie-setzten über BEAN nicht gefunden Allgemeines EE 4
D Eure Meinung über Internal Server Error Allgemeines EE 2
G Methodenaufruf über Klick auf Button Allgemeines EE 3
D Problem - Ansteuerung von Hardware über Webservices Allgemeines EE 10
T JavaMail Programm: Nachricht über Proxy versenden Allgemeines EE 3
M MVC in J2EE: mehrere JSPs über ein Servlet kontrollieren Allgemeines EE 7
D Sessions über mehrer wars ansprechen Allgemeines EE 3
M Übersicht über Application Server Allgemeines EE 3
T Variablen von Bean über Servlet setzen Allgemeines EE 5
Z Gute Tutorial über JSP Allgemeines EE 2

Ähnliche Java Themen

Neue Themen


Oben