[Hibernate] Zusammengesetzter Schlüssel mit anderen Objekten

janus23

Mitglied
(ich bin mir nicht sicher ob das Thema hier richtig ist, also bei Bedarf bitte verschieben :) )

Hallo Leute :)

Ich habe folgende Ausgangsituation:
Die Klasse Article:
Code:
@Entity
@Table
public class Article implements Serializable {
  
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private int articleID;
  @Column(nullable = false)
  private String name;
  @Column(nullable = false)
  private BigDecimal price = BigDecimal.ZERO;
//getter, setter, constructor
}

Die Klasse Payment:
Code:
@Table
@Entity
public class Payment implements Serializable {
  
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private int paymentID;
  @OneToOne
  private Account account;
  @OneToOne
  private Payee payee;
  @Column(nullable = false)
  private Date date;
  @OneToMany
  private List<PaymentPosition> paymentPositions;
//getter, setter, constructor
}

Jetzt möchte ich gerne mit diesen Klassen einen Primary Key bilden, dazu habe ich mal folgende Klassen angelegt:
Code:
public class PaymentPositionPK implements Serializable{
  protected Article article;
  protected Payment payment;

  

  public PaymentPositionPK() {
  article = new Article();
  payment = new Payment();
  }
//getter,...
}

und:

Code:
@Entity
@Table
@IdClass(PaymentPositionPK.class)
public class PaymentPosition implements Serializable {
  
  @Id
  private Article article;
  @Id
  private Payment payment;
  
  
  @Column(nullable = false)
  private int quantity;
  @OneToOne
  private Category category;
//getter, setter, bla..
}

Lasse ich nun die Tabellen von Hibernate erzeugen, spuckt er mir folgende aus:
Table: payment_paymentposition
Columns:
Payment_paymentID int(11)
paymentPositions_article tinyblob
paymentPositions_payment tinyblob

was mir ziemlich falsch vorkommt.

Wie kann ich das den richtig machen?^^

Danke für die Hilfe!
 
Was genau ist eigentlich deine Intention? Auf mich macht es den Eindruck, als wolltest du eine Zuordnung (Mapping) haben, welche man in der Regel mit ManyToMany, ManyToOne, OneToMany oder OneToOne und einer entsprechenden Kreuz-Tabelle erreicht.

Was genau soll das alles bezwecken?
 
Zurück