Pracuję z Eclipselink i mam problem z używaniem tabeli dodatkowej. Mam dwie tabele, jak poniżej.
Student z kolumnami student_id (Primary Key), student_name itp.
Rejestracja w kolumnach student_id (relacja FK z tabelą Studenta), nazwa kursu (bez ograniczenia zerowego) itp.
Warunkiem jest, że student może, ale nie musi, zarejestrować się. Jeśli uczeń ma rejestrację, dane należy również utrwalić w Tabeli rejestracji. W przeciwnym razie tylko tabela Studentów powinna zostać utrwalona.
Mój fragment kodu wygląda tak, jak poniżej.
Student.java
------------
@Entity
@Table(name = "STUDENT")
@SecondaryTable(name = "REGISTRATION")
@Id
@Column(name = "STUDENT_ID")
private long studentId;
@Basic(optional=true)
@Column(name = "COURSE_NAME", table = "REGISTRATION")
private String courseName;
Próbowałem następujących scenariuszy. 1. Student z rejestracją - działa dobrze. Dane są dodawane zarówno do tabel Studentów, jak i Rejestracyjnych 2. Uczeń bez rejestracji - błąd, taki jak „COURSE_NAME”, nie może być zerowy.
Czy istnieje sposób, aby zapobiec utrzymywaniu się w tabeli dodatkowej?
Każda pomoc jest doceniana.
Dzięki!!!
Odpowiedzi:
0 dla odpowiedzi № 1Jak stwierdza @Eelke, najlepszym rozwiązaniem jest zdefiniowanie dwóch klas i relacji OneToOne.
Potencjalnie możesz również użyć dziedziczenia, mając Ucznia i Zarejestrowanego Studenta, który dodaje dodatkową tabelę. Ale relacja jest znacznie lepszym projektem.