Я пытаюсь создать базу данных, используя Spring Data и Hibernate.Я планирую сделать 3 таблицы .Я не знаю, следует ли мне использовать несколько объектов в разных классах или, возможно, аннотацию @SecondaryTable(s)
и одну аннотацию @Entity
.
Схема базы данных
Выше приведены только некоторые примерные столбцы, которые я хочу добавить в базу данных.
Как правило, у нас есть клиент (таблица CUSTOMER), который может зарегистрировать себя (или себя) в определенных классах (таблица CLASSES_REGISTRATION) и может дать разрешение, например, делать фотографии во время занятий.(Таблица APPROVALS)
Я хотел бы иметь внешние ключи в таблицах APPROVALS и CLASSES_REGISTRATION. Я пытался сделать это с двумя таблицами в настоящее время (без таблицы APPROVALS) В результате я получил ошибку:
A Foreign key refering com.jtm.twiservice.model.Customer from com.jtm.twiservice.model.Customer has the wrong number of column. should be 1
Spring Model с ошибкой:
package com.jtm.twiservice.model;
import javax.annotation.Generated;
import javax.persistence.*;
@Entity
@Table (name = "customer")
@SecondaryTable(name ="registration",
pkJoinColumns = {
@PrimaryKeyJoinColumn(name ="customerId"),
@PrimaryKeyJoinColumn(name = "registrationId")})
public class Customer {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long customerId;
private String firstName;
private String lastName;
private String email;
private String schoolForm;
private String schoolFormType;
private String birthYear;
private String childDescription;
@Column(table = "registration")
private Long registrationId;
@Column(table = "registration")
private String registrationTest;
public Customer() {}
public Customer(String firstName, String lastName, String email, String schoolForm, String schoolFormType, String birthYear, String childDescription, String registrationTest) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.schoolForm = schoolForm;
this.schoolFormType = schoolFormType;
this.birthYear = birthYear;
this.childDescription = childDescription;
this.registrationTest = registrationTest;
}
public Long getCustomerId() {
return customerId;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public String getEmail() {
return email;
}
public String getSchoolForm() {
return schoolForm;
}
public String getSchoolFormType() {
return schoolFormType;
}
public String getBirthYear() { return birthYear; }
public String getChildDescription() {
return childDescription;
}
public void setCustomerId(Long customerId) {
this.customerId = customerId;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public void setEmail(String email) {
this.email = email;
}
public void setSchoolForm(String schoolForm) {
this.schoolForm = schoolForm;
}
public void setSchoolFormType(String schoolFormType) {
this.schoolFormType = schoolFormType;
}
public void setBirthYear(String birthYear) { this.birthYear = birthYear; }
public void setChildDescription(String childDescription) {
this.childDescription = childDescription;
}
//CLASSES_REGISTRATION TABLE
public Long getRegistrationId() {
return registrationId;
}
public void setRegistrationId(Long registrationId) {
this.registrationId = participationId;
}
public String getRegistrationTest() {
return registrationTest;
}
public void setRegistrationTest(String registrationTest) {
this.registrationTest = registrationTest;
}
}
Некоторые имена полей немного отличаются, чем на рисунке со схемой базы данных.В коде модели также больше полей, чем на картинке.Но я думаю, что это не будет проблемой для вас.
Я новичок в вопросе о Stackoverflow.Если что-то не понятно, или я бы сделал что-то лучше, пожалуйста, дайте мне отзыв.Спасибо!