Когда лучше использовать @SecondaryTable (s) вместо отдельных сущностей в разных классах? - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь создать базу данных, используя 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.Если что-то не понятно, или я бы сделал что-то лучше, пожалуйста, дайте мне отзыв.Спасибо!

...