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;
}
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
add a comment |
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
add a comment |
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
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
sql hibernate jpa hibernate-mapping
asked Nov 24 '18 at 10:04
GreyScreenOfMehGreyScreenOfMeh
638
638
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
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
}
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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
}
add a comment |
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
}
add a comment |
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
}
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
}
edited Nov 24 '18 at 11:01
answered Nov 24 '18 at 10:26
Alan HayAlan Hay
16k22974
16k22974
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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