如何正确管理实体在休眠,2他们的继承后一个

0

的问题

我得到了一个快速的问题。 我想让数据如下: 授权(电子邮件,通过)->的客户(姓名、...) 授权(电子邮件,通过)->修理厂(nip、位置...)

验证

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)

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

客户

@Entity
public class Client extends Auth{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long idClient;
    ...
    @ManyToOne
    private 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;

与仓库看起来像 AuthRepository

public interface AuthRepository extends JpaRepository<Long, Auth>{

}

ClientRepository

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

RepairShopRepository

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

授权不是抽象的类,这只是表有良好的身份验证,在我的项目 (目前,我们只是手动加入表一些触发写数据从客户和修理厂执行授权,但是我要寻找更好的解决方案)

我的目标是有数据库喜欢 验证 idauth 电子邮件 通 作用

客户 idclient 名称 姓 idauth

修理厂 idrepairShop nip 位置 idauth

它甚至有可能做这样下? 或者它仅仅是坏主意和我应该使用onetoone关系,甚至不喜欢玩这个。 或许有更好的解决方案在数据库结构。 也重要的是要让它很容易的工作与的角度应用程序以很容易地接登录数据的授权以管理其他性质的从客户/修理厂的表

我认为,问题就在这里就在我的储存库的配置,但我不肯定。

你怎么想?

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

最好的答案

0

如果你看一下客户机->的身份验证和repairship->证关系,从面向对象的角度来看,它是一个拥有的一种关系,而不是-一个relatioship. 因此,onetoone是最好的地图。

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

维修店

@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

其他语言

此页面有其他语言版本

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