Ich versuche, die Annotation Hibernate zum Schreiben einer Modellklasse für meine Datenbanktabellen zu verwenden.
Ich habe zwei Tabellen mit jeweils einem Primärschlüssel Benutzer und Frage.
@Entity
@Table(name="USER")
public class User
{
@Id
@Column(name="user_id")
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@Column(name="username")
private String username;
// Getter and setter
}
Fragetabelle.
@Entity
@Table(name="QUESTION")
public class Questions extends BaseEntity{
@Id
@Column(name="question_id")
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
@Column(name="question_text")
private String question_text;
// Getter and setter
}
Und ich habe noch eine Tabelle, UserAnswer, die userId und questionId als Fremdschlüssel aus den beiden oben genannten Tabellen hat.
Ich kann jedoch nicht finden, wie ich auf diese Einschränkungen in der UserAnswer-Tabelle verweisen kann.
@Entity
@Table(name="UserAnswer ")
public class UserAnswer
{
@Column(name="user_id")
private User user;
//@ManyToMany
@Column(name="question_id")
private Questions questions ;
@Column(name="response")
private String response;
// Getter and setter
}
Wie kann ich das erreichen?
Es gibt viele Antworten und alle sind auch richtig. Aber leider hat keiner von ihnen eine klare Erklärung.
Das Folgende funktioniert auch für eine Nicht-Primärschlüsselzuordnung.
Angenommen, wir haben die übergeordnete Tabelle A mit Spalte 1 und eine andere Tabelle B mit Spalte 2, die auf Spalte 1 verweist:
@ManyToOne @JoinColumn(name = "TableBColumn", referencedColumnName = "TableAColumn") private TableA session_UserName;
@ManyToOne @JoinColumn(name = "bok_aut_id", referencedColumnName = "aut_id") private Author bok_aut_id;
quelle
@JoinColumn(name="reference_column_name")
Annotation kann über der Eigenschaft oder dem Feld der Klasse verwendet werden, auf die von einer anderen Entität verwiesen wird.quelle