Jak správně spravovat Subjekty ve Spánku, že 2 z nich zdědí po jednom

0

Otázka

mám rychlý dotaz. Snažím se, aby byly údaje následující: Auth(e-mail,heslo) -> Klient(jméno, příjmení, ...) Auth(e-mail,heslo) -> RepairShop(nip, umístění, ...)

Auth

@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;

RepairShop

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

S repozitáři vypadá jako AuthRepository

public interface AuthRepository extends JpaRepository<Long, Auth>{

}

ClientRepository

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

RepairShopRepository

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

Auth nemůže být abstraktní třída, to je pouze tabulka, že máme dobré auth v mém projektu (v současné době mám jen ručně přidána tabulka s některými spouští zápis dat z Klienta a RepairShop Auth, ale hledám lepší řešení)

Mým cílem je, aby databáze jako Auth idauth e-mail projít roli

Klient idclient jméno příjmení idauth

RepairShop idrepairShop nip umístění idauth

Je vůbec možné to udělat takto? Nebo to je jen špatný nápad a já bych se měla použít onetoone vztah a ani hrát takhle. Nebo možná existuje nějaké lepší řešení struktury databáze. Také je důležité, aby to snadno pracovat s Úhlovou Aplikaci snadno mít přístup od přihlášení s údaji z auth k řízení dalších vlastností od Klienta/RepairShop tabulky

Myslím, že problém spočívá v mé úložiště config, ale nejsem si jistý.

Co si o tom myslíte?

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

Nejlepší odpověď

0

Pokud se podíváte na klienta->auth a repairship -> auth vztah z OOP pohledu to je má-vztah, spíše než je-relatioship. Takže, onetoone je nejlepší způsob, jak mapu.

@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;

opravna

@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

V jiných jazycích

Tato stránka je v jiných jazycích

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