Hibernate : Delete Many-to-Many association with join table
up vote
1
down vote
favorite
I have two tables with the many-to-many association.
DB Details:
User--> Columns[Id,Name]
Role-->Columns[Id,Name]
UserRoles--> Columns[UserId,RoleId]
Hibernate Mapping Details:
/* User.hbm.xml */
<set name="Roles" table="UserRoles" inverse="true" cascade="all" lazy="false">
<key column="UserId" />
<many-to-many column="RoleId" class="Role" />
</set>
…
/* Rols.hbm.xml */
<join table="UserRoles">
<key column="RoleId" />
<many-to-one column="UserId" name="user"/>
</join>
When I am trying to delete the user, it is deleting the appropriate records in user and UserRoles, but it is also deleting Roles records which is not required using below code.
session.delete(user);
Even if I don't have any user in a Role, I want the Role to be there, just delete only records from User and UserRoles tables.How will i achieve this in XML.
java hibernate hibernate-mapping hibernate-criteria
add a comment |
up vote
1
down vote
favorite
I have two tables with the many-to-many association.
DB Details:
User--> Columns[Id,Name]
Role-->Columns[Id,Name]
UserRoles--> Columns[UserId,RoleId]
Hibernate Mapping Details:
/* User.hbm.xml */
<set name="Roles" table="UserRoles" inverse="true" cascade="all" lazy="false">
<key column="UserId" />
<many-to-many column="RoleId" class="Role" />
</set>
…
/* Rols.hbm.xml */
<join table="UserRoles">
<key column="RoleId" />
<many-to-one column="UserId" name="user"/>
</join>
When I am trying to delete the user, it is deleting the appropriate records in user and UserRoles, but it is also deleting Roles records which is not required using below code.
session.delete(user);
Even if I don't have any user in a Role, I want the Role to be there, just delete only records from User and UserRoles tables.How will i achieve this in XML.
java hibernate hibernate-mapping hibernate-criteria
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
I have two tables with the many-to-many association.
DB Details:
User--> Columns[Id,Name]
Role-->Columns[Id,Name]
UserRoles--> Columns[UserId,RoleId]
Hibernate Mapping Details:
/* User.hbm.xml */
<set name="Roles" table="UserRoles" inverse="true" cascade="all" lazy="false">
<key column="UserId" />
<many-to-many column="RoleId" class="Role" />
</set>
…
/* Rols.hbm.xml */
<join table="UserRoles">
<key column="RoleId" />
<many-to-one column="UserId" name="user"/>
</join>
When I am trying to delete the user, it is deleting the appropriate records in user and UserRoles, but it is also deleting Roles records which is not required using below code.
session.delete(user);
Even if I don't have any user in a Role, I want the Role to be there, just delete only records from User and UserRoles tables.How will i achieve this in XML.
java hibernate hibernate-mapping hibernate-criteria
I have two tables with the many-to-many association.
DB Details:
User--> Columns[Id,Name]
Role-->Columns[Id,Name]
UserRoles--> Columns[UserId,RoleId]
Hibernate Mapping Details:
/* User.hbm.xml */
<set name="Roles" table="UserRoles" inverse="true" cascade="all" lazy="false">
<key column="UserId" />
<many-to-many column="RoleId" class="Role" />
</set>
…
/* Rols.hbm.xml */
<join table="UserRoles">
<key column="RoleId" />
<many-to-one column="UserId" name="user"/>
</join>
When I am trying to delete the user, it is deleting the appropriate records in user and UserRoles, but it is also deleting Roles records which is not required using below code.
session.delete(user);
Even if I don't have any user in a Role, I want the Role to be there, just delete only records from User and UserRoles tables.How will i achieve this in XML.
java hibernate hibernate-mapping hibernate-criteria
java hibernate hibernate-mapping hibernate-criteria
asked Nov 22 at 6:34
Nitin
348
348
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
That's because of cascade="all"
which includes REMOVE. Replace it according to what you really need. See this for details.
could you please specified which is suitable to according above situation, I think its will be persist.
– Nitin
Nov 22 at 9:54
@Nitin I cannot say without knowing the application. In your place I would start without cascade and only add it when required by a specific operation.
– Eugen Covaci
Nov 22 at 10:21
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',
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%2f53425112%2fhibernate-delete-many-to-many-association-with-join-table%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
up vote
0
down vote
That's because of cascade="all"
which includes REMOVE. Replace it according to what you really need. See this for details.
could you please specified which is suitable to according above situation, I think its will be persist.
– Nitin
Nov 22 at 9:54
@Nitin I cannot say without knowing the application. In your place I would start without cascade and only add it when required by a specific operation.
– Eugen Covaci
Nov 22 at 10:21
add a comment |
up vote
0
down vote
That's because of cascade="all"
which includes REMOVE. Replace it according to what you really need. See this for details.
could you please specified which is suitable to according above situation, I think its will be persist.
– Nitin
Nov 22 at 9:54
@Nitin I cannot say without knowing the application. In your place I would start without cascade and only add it when required by a specific operation.
– Eugen Covaci
Nov 22 at 10:21
add a comment |
up vote
0
down vote
up vote
0
down vote
That's because of cascade="all"
which includes REMOVE. Replace it according to what you really need. See this for details.
That's because of cascade="all"
which includes REMOVE. Replace it according to what you really need. See this for details.
answered Nov 22 at 6:42
Eugen Covaci
1,17126
1,17126
could you please specified which is suitable to according above situation, I think its will be persist.
– Nitin
Nov 22 at 9:54
@Nitin I cannot say without knowing the application. In your place I would start without cascade and only add it when required by a specific operation.
– Eugen Covaci
Nov 22 at 10:21
add a comment |
could you please specified which is suitable to according above situation, I think its will be persist.
– Nitin
Nov 22 at 9:54
@Nitin I cannot say without knowing the application. In your place I would start without cascade and only add it when required by a specific operation.
– Eugen Covaci
Nov 22 at 10:21
could you please specified which is suitable to according above situation, I think its will be persist.
– Nitin
Nov 22 at 9:54
could you please specified which is suitable to according above situation, I think its will be persist.
– Nitin
Nov 22 at 9:54
@Nitin I cannot say without knowing the application. In your place I would start without cascade and only add it when required by a specific operation.
– Eugen Covaci
Nov 22 at 10:21
@Nitin I cannot say without knowing the application. In your place I would start without cascade and only add it when required by a specific operation.
– Eugen Covaci
Nov 22 at 10:21
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%2f53425112%2fhibernate-delete-many-to-many-association-with-join-table%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