Comment gérer correctement Entités Hibernate que 2 d'entre eux héritent après un

0

La question

j'ai une question rapide. Je suis en train de faire des données comme suit: Auth(e-mail,pass) -> Client(nom, prénom, ...) Auth(e-mail,pass) -> RepairShop(pin, emplacement, ...)

Auth

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)

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

Client

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

Avec des dépôts de la recherche comme 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 ne peut être abstraite de la classe, ce n'est que de table pour avoir une bonne auth dans mon projet (actuellement, j'ai juste rajouté à la table avec des déclencheurs d'écriture de données entre le Client et le RepairShop à Auth, mais je suis à la recherche d'une meilleure solution)

Mon but est d'avoir la base de données comme Auth idauth e-mail passer rôle

Client idclient nom nom de famille idauth

RepairShop idrepairShop pin emplacement idauth

Est-il même possible de le faire comme suit? Ou c'est juste une mauvaise idée et que je devrais utiliser la relation onetoone et n'avez même pas jouer de cette façon. Ou peut-être il ya une meilleure solution dans la structure de base de données. Il est également important de laisser de travailler plus facilement avec Angulaire de l'Application pour un accès facile de se connecter avec les données d'authentification à la gestion d'autres propriétés de Client/RepairShop tables

Je pense que le problème ici réside dans mon référentiel de configuration, mais je ne suis pas sûr.

Qu'en pensez-vous?

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

La meilleure réponse

0

Si vous regardez les client->auth et repairship -> auth relation de OOP perspective, il est un a-une relation plutôt que de est-un relatioship. Donc, onetoone est le meilleur moyen de la carte.

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

atelier de réparation

@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

Dans d'autres langues

Cette page est dans d'autres langues

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