编写存储库类以从链接的3个表中获取数据

时间:2018-11-15 15:26:47

标签: java hibernate spring-framework-beans

我有3张桌子

Port_Register

Mobile_Number(Primary Key) | Gaining_Code(Foreign Key to Telecom_Codes) | Losing_Codes

电信代码

Telecom_Code(Primary Key) | Contact_Provider_Id(Foreign_Key to Contact_Provider)

Contact_Provider

Contact_Provider_Id | Contact_Name

Gaining_CodeLosing_Code实际上是Telecom_Code

在以下情况下,我编写了如下的实体类

@Entity
@Table(name="Port_Register")
public class Port_Register {
    @Id
    @Column(name="MOBILE_NUMBER")
    private String mobile_Number;

    @ManyToOne
    @JoinColumn(name="GAINING_CODE",referencedColumnName="TELECOM_CODE")
    private TelecomCodes gainingCode;

    @ManyToOne
    @JoinColumn(name="LOSING_CODE",referencedColumnName="TELECOM_CODE")
    private TelecomCodes losingCSPCode;
}


    @Entity
    @Table(name="Telecom_Codes")
    public class TelecomCodes {

        @Id
        @Column(name="TELECOM_CODE")
        private String telecomCode;

        @OneToOne
        @Column(name = "CONTACT__Provider_Id")
        private ContactProvider contactProviderID;
    }
    @Entity
    @Table(name="ContactProvider")
    public class ContactProvider {
        @Column(name="CONTACT__Provider_Id")
        private String contactProviderId;

        @Column(name="CONTACT__Provider_NAME")
        private String ContactProviderName;
    }

我必须在存储库类中编写一个函数以获取格式的数据

MobileNumber|Gaining_code|LosingCode| Gaining_provider_Name| Losing_provider_Name

我所知道的是,只有一个预定义的存储库接口,该函数的功能可以在运行时了解abt的实现。

所以我创建了一个看起来像

的存储库
public interface PortOutRegisterRepository  extends CrudRepository< Ported_Register,String> {

//  public void store(T t);

//  public T retrieve(int id);

    //  public T delete(int id);
}

我以为我会打电话

PortOutRegisterRepository customRep;
List<Ported_Register> m=new ArrayList<Ported_Register>();
m=customRep.findall();

然后 我可以用它来获取个人信息

 for(Ported_Register p:m)
    {
    p.getGainingCode().getContactProviderID().getContactName();
    }

但这是完全错误的。

请帮助我如何为此编写存储库。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

CrudRepository允许您通过传递ID来查找项目。 findById

然后您可以从对象中获取所需的个人信息。

如果要查找表中的所有项目,也可以使用 findAll()方法 findAll

编辑:您必须确保在其他表中有引用。