присоединиться к трем таблицам репозитория jpa - PullRequest
0 голосов
/ 20 марта 2020

Я новичок в весенней спячке и ищу вашу поддержку. Я пытаюсь выполнить запрос к моей базе данных, о котором я сообщаю ниже. ЗАПРОС, КОТОРЫЙ Я ДОЛЖЕН ВЫПОЛНИТЬ, - СЛЕДУЮЩИЙ

   CREATE TABLE P1(
      P1_ID INT NOT NULL GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1),
      DESCRIPTION VARCHAR(100) NOT NULL,
      PRIMARY KEY (P1_ID)
     );

    CREATE TABLE P2(
      P2_ID INT NOT NULL GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1),
      DESCRIPTION VARCHAR(250) NOT NULL,
      PRIMARY KEY (P2_ID)
     ); 


     CREATE TABLE LINK(
      P2_ID int not null,
      P1_ID int not null,
      CONSTRAINT P1_FK FOREIGN KEY (P1_ID ) REFERENCES P1 (P1_ID ) ON DELETE CASCADE,
      CONSTRAINT P2_FK FOREIGN KEY (P2_ID ) REFERENCES P2 (P2_ID ),
      PRIMARY KEY(P2_ID , P1_ID )
     );
    THE QUERY I NEED TO EXECUTE is the FOLLOWING

    SELECT P2.* FROM P2 join LINK on P2.P2_ID=LINK.P2_ID join P1 on LINK.P1_ID = 1

ЗАПРОС РАБОТАЕТ ОЧЕНЬ ХОРОШО, НО Я ДОЛЖЕН ПЕРЕВОДИТЬ СВОЮ СТОРОНУ КОДА с помощью @query аннотация для репозитория jpa ... Я НЕ очень хорош в этой области, поэтому я прошу вас о поддержке МОЖЕТЕ ЛИ ВЫ ПОМОЧЬ МНЕ?

    @Entity
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @Table(name = "P1")
    public class P1Entity implements Serializable{
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "P1_ID",insertable = false, updatable = false)
        @Id
        private Integer P1ID;

        @Column(name = "description")
        private String description;

        @OneToMany(mappedBy = "p1Entity")
        private List<P2Entity> p2Entities;

        @OneToMany(mappedBy = "p1")
        private List<LinkEntity> p1LinkEntity;
    }

    @Entity
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @Table(name = "P2")
    public class P2Entity implements Serializable{
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "P2_ID",insertable = false, updatable = false)
        @Id
        private Integer P2ID;

        @Column(name = "description")
        private String description;

        @ManyToOne
        private P1Entity p1Entity;
        @OneToMany(mappedBy = "p2")
        private List<LinkEntity> p2LinkEntity;
    }

    @Entity
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @Table(name = "LINK")
    public class Link implements Serializable {

        @EmbeddedId
        private LinkEmbeddable privacyProductId;


        @ManyToOne
        private P1Entity p1;
        @ManyToOne
        private P2Entity p2;
    }


    @Embeddable
    @Data
    public class LinkEmbeddable extends LinkKey{
        public LinkEmbeddable () {
            super();
        }

        public LinkEmbeddable (Integer P1ID, Integer P2ID) {
            super(P1ID,  P2ID);
        }
    }



    @Embeddable
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @MappedSuperclass
    public class LinkKeyimplements Serializable{

        /**
         * 
         */
        private static final long serialVersionUID = -3141320281767575754L;

        @Column(name = "P2_ID",insertable = false, updatable = false)
        private Integer P2ID;

        @Column(name = "P1_ID",insertable = false, updatable = false)
        private Integer P1ID;

}

...