Jak prawidłowo zarządzać obiektami w trybie uśpienia, które 2 z nich dziedziczą po jednym

0

Pytanie

mam takie małe pytanie. Staram się zrobić następujące dane: Autoryzacja(e-mail,przepustka) -> Klient(imię, nazwisko, ...) Autoryzacja(e-mail,przepustka) -> warsztat(nip, lokalizacja, ...)

Autor

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)

public class Auth {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long authid;

Klient

@Entity
public class Client extends Auth{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long idClient;
    ...
    @ManyToOne
    private RepairShop repairShop;

Warsztat

@Entity
public class RepairShop extends Auth{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long idRepairShop;
    ...
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "repairShop")
    private Set<Client> clients;

W repozytoriach, jak Автореферат

public interface AuthRepository extends JpaRepository<Long, Auth>{

}

Клиентрепозиция

public interface ClientRepository extends JpaRepository<Client,Long> {
}

Remontowo-naprawczy

public interface RepairShopRepository extends JpaRepository<RepairShop, Long> {
}

Uwierzytelnianie nie może być klasą abstrakcyjną, to tylko tabela dla dobrej uwierzytelniania w moim projekcie (obecnie mam tylko że ręcznie dodał tabelę z niektórych wyzwalaczy dla zapisu danych z klienta i warsztatu w uwierzytelnianie, ale szukam najlepsze rozwiązanie)

Moim celem jest mieć bazę danych, podobną Rola wysyłania wiadomości e-mail Auth idauth

Klient idclient nazwa nazwisko idauth

Warsztat ID warsztat nip lokalizacja idauth

Czy to w ogóle możliwe, aby to zrobić w następujący sposób? Czy jest to po prostu zły pomysł, a ja mam po prostu użyć relacje onetoone i nawet nie grać. Czy może jest jakieś lepsze rozwiązanie w strukturze bazy danych. Ważne jest również, aby łatwo pracował z aplikacją Angular, aby mieć łatwy dostęp od rejestrowania danych z auth do sterowania innymi właściwościami z tabel klienta/warsztatu

Myślę, że problem tutaj tkwi w konfiguracji mojego repozytorium, ale nie jestem pewien.

Co o tym myślicie?

hibernate inheritance java spring
2021-11-23 23:33:24
1

Najlepsza odpowiedź

0

Jeśli spojrzeć na relacje klient->uwierzytelnianie i naprawy ->> uwierzytelnianie z punktu widzenia OOP, to raczej związek, niż relacje. Tak więc, onetoone-najlepszym sposobem, aby go wyświetlić.

@Entity 
public class Client extends Auth{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long idClient;
    ...
    @ManyToOne
    private RepairShop repairShop;
    @OneToOne
    @JoinColumn(name="idauth")
    private Auth auth;

warsztat

@Entity
    public class RepairShop extends Auth{
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long idRepairShop;
        ...
        @OneToMany(cascade = CascadeType.ALL, mappedBy = "repairShop")
        private Set<Client> clients;
        @OneToOne
        @JoinColumn(name="idauth")
        private Auth auth;
2021-11-24 01:21:24

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................