Hazırda Bekletme Modunda, bunlardan 2'sinin birinden sonra devraldığı Varlıkları doğru şekilde nasıl yönetebilirim

0

Soru

size bir sorum var. Verileri aşağıdaki gibi yapmaya çalışıyorum: (Adı, Soyadı(e-mail,pass) Auth -> İstemci ...) (Nip, konum(e-posta,pass) Auth -> RepairShop ...)

Auth

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)

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

Müşteri

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

Tamirci

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

Gibi görünen depolarla 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 soyut sınıf olamaz, bu sadece projemde iyi bir auth olması için tablodur (şu anda İstemciden ve repairshop'tan Auth dosyasına veri yazmak için bazı tetikleyicilere sahip tabloyu manuel olarak ekledim, ancak daha iyi bir çözüm arıyorum)

Amacım aşağıdaki gibi bir veritabanına sahip olmaktır Auth ıdauth e-posta geçmek rol

Müşteri ıdclient isim soyadı ıdauth

Tamirci ıdrepairShop kesmek konum ıdauth

Bunu aşağıdaki gibi yapmak mümkün mü? Ya da bu sadece kötü bir fikir ve sadece tek bir ilişki kullanmalı ve böyle oynamamalıyım. Ya da belki veritabanı yapısında daha iyi bir çözüm var. Ayrıca, Angular Uygulamasıyla kolayca çalışmasına izin vermek önemlidir, böylece auth verilerinden günlüğe kaydetmeden İstemci/Onarım tablolarından diğer özellikleri yönetmeye kolayca erişebilirsiniz

Buradaki sorunun depo yapılandırmamda yattığını düşünüyorum ama emin değilim.

Bu konuda ne düşünüyorsunuz?

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

En iyi cevabı

0

İstemci - > yetkilendirme ve onarım ->> yetkilendirme ilişkisine OOP perspektifinden bakarsanız, bir ilişkiden ziyade bir has-a ilişkisidir. Yani, onetoone onu haritalamanın en iyi yoludur.

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

tamirci

@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

Diğer dillerde

Bu sayfa diğer dillerde

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