Como administrar corretamente as Entidades no Hibernate que 2 deles herdar depois de um

0

Pergunta

eu tenho uma pergunta rápida. Eu estou tentando fazer de dados como a seguir: Auth(e-mail,passar) -> Cliente(nome, sobrenome, ...) Auth(e-mail,passar) -> RepairShop(ponto de tangência, local, ...)

Auth

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)

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

Cliente

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

Com repositórios parecendo 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 não pode ser uma classe abstrata, esta é apenas a tabela de ter um bom auth no meu projeto (no momento eu tenho apenas adicionados manualmente a tabela com alguns gatilhos para escrever os dados de Cliente e RepairShop Auth, mas eu estou procurando a melhor solução)

Meu objetivo é ter como base de dados Auth idauth e-mail passar função

Cliente idclient nome sobrenome idauth

RepairShop idrepairShop nip localização idauth

É possível até mesmo fazer como se segue? Ou é apenas má ideia e que eu deveria usar onetoone relacionamento e não jogar mesmo assim. Ou talvez haja alguma solução melhor em estrutura de banco de dados. Também é importante deixá-lo trabalhar facilmente com Angular Aplicativo para ter acesso facilmente a partir do registro com os dados de autenticação para a gestão de outras propriedades do Cliente/RepairShop tabelas

Eu acho que o problema aqui reside no meu repositório de configuração, mas im não tem certeza.

O que você acha sobre isso?

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

Melhor resposta

0

Se você olhar para o cliente->auth e repairship -> auth relação de OOP perspectiva é um tem-um relacionamento, ao invés do que é-um relatioship. Assim, onetoone é a melhor maneira para mapeá-lo.

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

oficina de reparação

@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

Em outros idiomas

Esta página está em outros idiomas

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