@OneToMany nie zapisują kluczy obcych. Enum.

0

Jak w temacie. Mam encje Mark i Student. Student ma jakieś tam oceny w relacji @OneToMany z CascadeType ustawionym na Persist i Remove. Przy zapisywaniu Studenta do bazy danych zapisują się także oceny tylko że już bez klucza głównego. Taką samą sytucaję mam jak mam Klasę StudentClass i Studentów. Wycinki kodów:

class Student{
    @OneToMany(mappedBy = "student",cascade = {CascadeType.PERSIST, CascadeType.REMOVE})
    private List<Mark> marks;
    @ManyToOne
    private StudentClass studentClass;
}
class Mark{
    @ManyToOne()
    private Student student;
}
class StudentClass{
    @OneToMany(mappedBy = "studentClass")
    private List<Student> students;
}

Drugie pytanie: Czemu pola jako Enum zapisywane w BD są typem Int? Nie powinny być np Stringiem? W MySQL. Jeżeli są intami, to jaki jest sens dodawania typów Enum skoro same Inty z poziomu BD nic nie mówią?

0

Pierwszego pytania nie rozumiem.
Drugie: zapisuje sie tak mu każesz zapisać. Default to zapisywanie ordinala ale możesz dać @Enumerated(EnumType.STRING) i sie zapisze nazwa.

0

W pierwszym pytaniu chodzi mi o to, że przykładowe Oceny, tam gdzie powinien być w Tabeli klucz obcy wskazujący do którego Ucznia należą, mają nulla mimo że dodałem je do Listy w Student.

0

Musisz jeszcze ustawić druga stronę relacji, czyli na ocenie ustawić ucznia.

0

Przecież to mam zrobione, w wyrywkach kodu to pokazałem.

0

Pokazałeś tylko encje. Przy dodawaniu danych, na ocenie powinieneś ustawić ucznia.

0

Aaaa, sprawdzę to jutro, ale brzmi bardzo logicznie i możliwe że to jest problemem.

0

Jak ściągniesz JavaPersistence.pdf, to w rozdziale 2.9 Entity Relationships:

Note that it is the application that bears responsibility for maintaining the consistency of runtime
relationships—for example, for insuring that the “one” and the “many” sides of a bidirectional
relationship are consistent with one another when the application updates the
relationship at runtime.

Czyli to, co mówi @icepopo, tylko mniej zrozumiale :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1