hibernate/jpa double OneToOne Bidirectional Relationship to one entity
I have the following structure that I can't figure out how to put in the correct hibernate mapping.
public class Company{
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "details_x")
private Details detailsX;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "details_y")
private Details detailsY;
}
and
public class Details{
....
private Type type; //Enum that could be x or y
@OneToOne
private Company company;
}
Company has exactly on details for x and one for y. A details can only be used by one company in either x or y.
Database wise I'm think the best set-up is to have 2 columns on tbl_company reference the Pk of Details.
But this results in the relation from Details to Company not working.
Anyone any suggestions on how to best map this?
Edit: added type to Details
java hibernate spring-boot jpa orm
add a comment |
I have the following structure that I can't figure out how to put in the correct hibernate mapping.
public class Company{
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "details_x")
private Details detailsX;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "details_y")
private Details detailsY;
}
and
public class Details{
....
private Type type; //Enum that could be x or y
@OneToOne
private Company company;
}
Company has exactly on details for x and one for y. A details can only be used by one company in either x or y.
Database wise I'm think the best set-up is to have 2 columns on tbl_company reference the Pk of Details.
But this results in the relation from Details to Company not working.
Anyone any suggestions on how to best map this?
Edit: added type to Details
java hibernate spring-boot jpa orm
add a comment |
I have the following structure that I can't figure out how to put in the correct hibernate mapping.
public class Company{
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "details_x")
private Details detailsX;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "details_y")
private Details detailsY;
}
and
public class Details{
....
private Type type; //Enum that could be x or y
@OneToOne
private Company company;
}
Company has exactly on details for x and one for y. A details can only be used by one company in either x or y.
Database wise I'm think the best set-up is to have 2 columns on tbl_company reference the Pk of Details.
But this results in the relation from Details to Company not working.
Anyone any suggestions on how to best map this?
Edit: added type to Details
java hibernate spring-boot jpa orm
I have the following structure that I can't figure out how to put in the correct hibernate mapping.
public class Company{
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "details_x")
private Details detailsX;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "details_y")
private Details detailsY;
}
and
public class Details{
....
private Type type; //Enum that could be x or y
@OneToOne
private Company company;
}
Company has exactly on details for x and one for y. A details can only be used by one company in either x or y.
Database wise I'm think the best set-up is to have 2 columns on tbl_company reference the Pk of Details.
But this results in the relation from Details to Company not working.
Anyone any suggestions on how to best map this?
Edit: added type to Details
java hibernate spring-boot jpa orm
java hibernate spring-boot jpa orm
edited Nov 21 at 8:10
asked Nov 20 at 19:05
Joris
13
13
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
You have to define mappedBy property which will say that i am not the owner like below.
public class Details{
@OneToOne(mappedBy = "detailsX", cascade = CascadeType.ALL,
fetch = FetchType.LAZY, optional = false)
private Company company;
}
This only works then for detailsX not for detailsY, the problem I'm having it is one of these 2
– Joris
Nov 20 at 19:51
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%2f53399868%2fhibernate-jpa-double-onetoone-bidirectional-relationship-to-one-entity%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
You have to define mappedBy property which will say that i am not the owner like below.
public class Details{
@OneToOne(mappedBy = "detailsX", cascade = CascadeType.ALL,
fetch = FetchType.LAZY, optional = false)
private Company company;
}
This only works then for detailsX not for detailsY, the problem I'm having it is one of these 2
– Joris
Nov 20 at 19:51
add a comment |
You have to define mappedBy property which will say that i am not the owner like below.
public class Details{
@OneToOne(mappedBy = "detailsX", cascade = CascadeType.ALL,
fetch = FetchType.LAZY, optional = false)
private Company company;
}
This only works then for detailsX not for detailsY, the problem I'm having it is one of these 2
– Joris
Nov 20 at 19:51
add a comment |
You have to define mappedBy property which will say that i am not the owner like below.
public class Details{
@OneToOne(mappedBy = "detailsX", cascade = CascadeType.ALL,
fetch = FetchType.LAZY, optional = false)
private Company company;
}
You have to define mappedBy property which will say that i am not the owner like below.
public class Details{
@OneToOne(mappedBy = "detailsX", cascade = CascadeType.ALL,
fetch = FetchType.LAZY, optional = false)
private Company company;
}
answered Nov 20 at 19:11
Alien
4,68331024
4,68331024
This only works then for detailsX not for detailsY, the problem I'm having it is one of these 2
– Joris
Nov 20 at 19:51
add a comment |
This only works then for detailsX not for detailsY, the problem I'm having it is one of these 2
– Joris
Nov 20 at 19:51
This only works then for detailsX not for detailsY, the problem I'm having it is one of these 2
– Joris
Nov 20 at 19:51
This only works then for detailsX not for detailsY, the problem I'm having it is one of these 2
– Joris
Nov 20 at 19:51
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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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%2f53399868%2fhibernate-jpa-double-onetoone-bidirectional-relationship-to-one-entity%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