Ako správne spravovať Subjektov v Spánku, že 2 z nich, dedia po jednom

0

Otázka

mám rýchly dotaz. Snažím sa, aby údaje nasledovne: Auth(e-mail,pass) -> Klient(meno, priezvisko, ...) Auth(e-mail,pass) -> RepairShop(nip, miesto, ...)

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 úložiská vyzerá ako 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 byť abstraktná trieda, to je len tabuľka mať dobré auth v môj projekt (v súčasnosti som len manuálne pridané tabuľka s niektorými spúšťa na zápis údajov od Klienta a RepairShop Auth, ale hľadám lepšie riešenie)

Mojím cieľom je mať v našej databáze, ako Auth idauth e-mail prejsť úloha

Klient idclient názov priezvisko idauth

RepairShop idrepairShop nip umiestnenie idauth

Je to možné aj na to, ako vyplýva? Alebo je to len zlý nápad, a ja by stačí použiť onetoone vzťah a nemusíte dokonca hrať ako je táto. Alebo možno tam je nejaké lepšie riešenie v databázovej štruktúre. Tiež je dôležité, aby sa ľahko pracovať s Hranatými App jednoducho mať prístup z zapisovanie dát z auth na riadenie iných vlastností od Klienta/RepairShop tabuľky

Myslím, že problém tu spočíva v mojom úloţiska config, ale im nie je istý.

Čo si myslíte o tom?

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

Najlepšiu odpoveď

0

Ak sa pozriete na klienta->auth a repairship -> auth vzťah z OOP pohľadu je a má-vzťah skôr, než je-relatioship. Tak, onetoone je najlepší spôsob, ako mape je.

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

opravovňa

@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 iných jazykoch

Táto stránka je v iných jazykoch

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