How do I map this relationship using JPA/Hibernate?





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







0















I have two tables that share a common key. What I'd like is that when I load the class for the first table, I would also get a list of classes corresponding to the second table where they share the key.



More specifically: tableA has an id (id1) that exists in multiple entries of tableB. However, tableB uses a composite key and uses both id1 and id2 as keys.



What I'd like to achieve is that when the POJO for tableA is loaded, i also get all entries of table B where id1 from table A equals id1 in table B. Something like:



public class TableA {
private String id1;
private List<TableB> list; // where id1 in tableA == id1 in tableB
}


table A id column:
id1

table B composite id:
id1 // same as for tableA
id2









share|improve this question





























    0















    I have two tables that share a common key. What I'd like is that when I load the class for the first table, I would also get a list of classes corresponding to the second table where they share the key.



    More specifically: tableA has an id (id1) that exists in multiple entries of tableB. However, tableB uses a composite key and uses both id1 and id2 as keys.



    What I'd like to achieve is that when the POJO for tableA is loaded, i also get all entries of table B where id1 from table A equals id1 in table B. Something like:



    public class TableA {
    private String id1;
    private List<TableB> list; // where id1 in tableA == id1 in tableB
    }


    table A id column:
    id1

    table B composite id:
    id1 // same as for tableA
    id2









    share|improve this question

























      0












      0








      0








      I have two tables that share a common key. What I'd like is that when I load the class for the first table, I would also get a list of classes corresponding to the second table where they share the key.



      More specifically: tableA has an id (id1) that exists in multiple entries of tableB. However, tableB uses a composite key and uses both id1 and id2 as keys.



      What I'd like to achieve is that when the POJO for tableA is loaded, i also get all entries of table B where id1 from table A equals id1 in table B. Something like:



      public class TableA {
      private String id1;
      private List<TableB> list; // where id1 in tableA == id1 in tableB
      }


      table A id column:
      id1

      table B composite id:
      id1 // same as for tableA
      id2









      share|improve this question














      I have two tables that share a common key. What I'd like is that when I load the class for the first table, I would also get a list of classes corresponding to the second table where they share the key.



      More specifically: tableA has an id (id1) that exists in multiple entries of tableB. However, tableB uses a composite key and uses both id1 and id2 as keys.



      What I'd like to achieve is that when the POJO for tableA is loaded, i also get all entries of table B where id1 from table A equals id1 in table B. Something like:



      public class TableA {
      private String id1;
      private List<TableB> list; // where id1 in tableA == id1 in tableB
      }


      table A id column:
      id1

      table B composite id:
      id1 // same as for tableA
      id2






      sql hibernate jpa hibernate-mapping






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 24 '18 at 10:04









      GreyScreenOfMehGreyScreenOfMeh

      638




      638
























          1 Answer
          1






          active

          oldest

          votes


















          1














          Class B will have a composite Identifier partially dependent on A. This can be mapped using an EmbeddedID or by specifiyng an ID class. Using an ID class would look like the below:



          Entity A



          @Entity
          public class A {
          @Id
          @Column(name = "id1")
          private Long id1;

          @OneToMany(mappedBy = "a")
          private Set<B> bs;
          }


          Entity B



          @Entity
          @IdClass(Bid.class)
          public class B {
          @Id
          @ManyToOne
          @JoinColumn(name = "id1")
          private A a;

          @Id
          @Column(name = "id1")
          private Long id2;
          }


          ID Class for B



          public class Bid implements Serializable{
          //must be of same type as id of target entity A
          private Long a;
          private Long id2;

          // **must** implement equals and hash code
          }





          share|improve this answer


























            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53457073%2fhow-do-i-map-this-relationship-using-jpa-hibernate%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            1














            Class B will have a composite Identifier partially dependent on A. This can be mapped using an EmbeddedID or by specifiyng an ID class. Using an ID class would look like the below:



            Entity A



            @Entity
            public class A {
            @Id
            @Column(name = "id1")
            private Long id1;

            @OneToMany(mappedBy = "a")
            private Set<B> bs;
            }


            Entity B



            @Entity
            @IdClass(Bid.class)
            public class B {
            @Id
            @ManyToOne
            @JoinColumn(name = "id1")
            private A a;

            @Id
            @Column(name = "id1")
            private Long id2;
            }


            ID Class for B



            public class Bid implements Serializable{
            //must be of same type as id of target entity A
            private Long a;
            private Long id2;

            // **must** implement equals and hash code
            }





            share|improve this answer






























              1














              Class B will have a composite Identifier partially dependent on A. This can be mapped using an EmbeddedID or by specifiyng an ID class. Using an ID class would look like the below:



              Entity A



              @Entity
              public class A {
              @Id
              @Column(name = "id1")
              private Long id1;

              @OneToMany(mappedBy = "a")
              private Set<B> bs;
              }


              Entity B



              @Entity
              @IdClass(Bid.class)
              public class B {
              @Id
              @ManyToOne
              @JoinColumn(name = "id1")
              private A a;

              @Id
              @Column(name = "id1")
              private Long id2;
              }


              ID Class for B



              public class Bid implements Serializable{
              //must be of same type as id of target entity A
              private Long a;
              private Long id2;

              // **must** implement equals and hash code
              }





              share|improve this answer




























                1












                1








                1







                Class B will have a composite Identifier partially dependent on A. This can be mapped using an EmbeddedID or by specifiyng an ID class. Using an ID class would look like the below:



                Entity A



                @Entity
                public class A {
                @Id
                @Column(name = "id1")
                private Long id1;

                @OneToMany(mappedBy = "a")
                private Set<B> bs;
                }


                Entity B



                @Entity
                @IdClass(Bid.class)
                public class B {
                @Id
                @ManyToOne
                @JoinColumn(name = "id1")
                private A a;

                @Id
                @Column(name = "id1")
                private Long id2;
                }


                ID Class for B



                public class Bid implements Serializable{
                //must be of same type as id of target entity A
                private Long a;
                private Long id2;

                // **must** implement equals and hash code
                }





                share|improve this answer















                Class B will have a composite Identifier partially dependent on A. This can be mapped using an EmbeddedID or by specifiyng an ID class. Using an ID class would look like the below:



                Entity A



                @Entity
                public class A {
                @Id
                @Column(name = "id1")
                private Long id1;

                @OneToMany(mappedBy = "a")
                private Set<B> bs;
                }


                Entity B



                @Entity
                @IdClass(Bid.class)
                public class B {
                @Id
                @ManyToOne
                @JoinColumn(name = "id1")
                private A a;

                @Id
                @Column(name = "id1")
                private Long id2;
                }


                ID Class for B



                public class Bid implements Serializable{
                //must be of same type as id of target entity A
                private Long a;
                private Long id2;

                // **must** implement equals and hash code
                }






                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Nov 24 '18 at 11:01

























                answered Nov 24 '18 at 10:26









                Alan HayAlan Hay

                16k22974




                16k22974
































                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53457073%2fhow-do-i-map-this-relationship-using-jpa-hibernate%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    這個網誌中的熱門文章

                    Xamarin.form Move up view when keyboard appear

                    Post-Redirect-Get with Spring WebFlux and Thymeleaf

                    Anylogic : not able to use stopDelay()