Объедините две таблицы без внешних ключей в Spring Boot с похожими идентификаторами - PullRequest
1 голос
/ 24 января 2020

Здесь у меня есть две таблицы; оба имеют идентификаторы в качестве первичных ключей. Я хочу знать, как объединить эти таблицы без внешних ключей, основываясь на их идентификаторах. Какой должна быть реализация сервиса и что должно быть в репозитории? Как написать @Query с JOINS?

@Entity
@Table(name = "procedures")
@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" })
public class Procedure implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ProcedureId")
    private int id;

    @Column(name = "ProcedureName")
    private String name;
    @Column(name = "ProcedureCode")
    private String code;

    @Column(name = "ProcedureDesc")
    private String desc;
//  getters and setters
}
@Entity
@Table(name = "cliniciandescriptor")
public class CPTClinicianDescriptor {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "Id")
    private int id;

    @Column(name = "ConceptId")
    private int conceptId;

    @Column(name = "CPTCode")
    private String cptCode;

    @Column(name = "ClinicianDescriptorId")
    private int clinicianDescriptorId;


    @Column(name = "ClinicianDescriptor")
    private String clinicianDescriptor;
//  getters and setters
}

Ответы [ 2 ]

0 голосов
/ 24 января 2020

Рассматривая это как отношение один-к-одному, вы можете использовать что-то вроде этого.

@Entity
@Table(name = "procedures")
@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" })
public class Procedure implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ProcedureId")
    private int id;

    @Column(name = "ProcedureName")
    private String name;
    @Column(name = "ProcedureCode")
    private String code;

    @OneToOne(optional = false)
    @JoinColumn(name = "id", updatable = false, insertable = false)
    private CPTClinicianDescriptor  descriptor;

    @Column(name = "ProcedureDesc")
    private String desc;
//  getters and setters
}
0 голосов
/ 24 января 2020

Вы можете использовать JOIN по синтаксису, как в SQL

Например,

select p from Procedure p join CPTClinicianDescriptor c on c.id = p.id;

Подробнее об этом topi c здесь: https://72.services/how-to-join-two-entities-without-mapped-relationship/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...