[hibernate-issues] [Hibernate-JIRA] Resolved: (HHH-5256) Update of Many-to-Many relationships not allways working (deletes records but doesn't insert them)
Gail Badner (JIRA)
noreply at atlassian.com
Fri Jul 16 21:06:13 EDT 2010
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-5256?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Gail Badner resolved HHH-5256.
------------------------------
Assignee: Gail Badner
Resolution: Rejected
> Update of Many-to-Many relationships not allways working (deletes records but doesn't insert them)
> --------------------------------------------------------------------------------------------------
>
> Key: HHH-5256
> URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5256
> Project: Hibernate Core
> Issue Type: Bug
> Components: entity-manager
> Affects Versions: 3.3.2
> Environment: JBoss 5.1.0.GA / MySql 5.1
> Reporter: Ignacio Larrañaga
> Assignee: Gail Badner
> Priority: Critical
> Attachments: bug_test.jar
>
>
> I'm executing an update of the User entity and it deletes a relationship that must not change as it is not modified.
> It works well when new registers are added to the practicedSports relationship as well that when this relationship is updated, but when I update another field of the User entity, without changing practicedSports Hibernates only executes the delete so the entities disapears after the update.
> Also I verify that the user entity has something in the collection to be updated.
> This is the declaration of the User object, and particularly the relationship:
> @Entity
> @Name(User.SEAM_CONTEXT_NAME)
> @Scope(ScopeType.CONVERSATION)
> @Table(name="users", uniqueConstraints = {
> @UniqueConstraint(columnNames={"country_id", "citizen_id"})
> })
> @NamedQueries({
> @NamedQuery(name = User.FIND_BY_NAME, query = "from User where name = :name"),
> @NamedQuery(name = User.FIND_BY_EMAIL, query = "from User where email = :email"),
> @NamedQuery(name = User.FIND_BY_MOBILE_PHONE, query = "from User where mobilePhone = :mobilePhone")
> })
> public class User extends AuditableBaseObject implements IdentifiableObject, AddressableObject, CarrierableObject {
> ....
> @ManyToMany(cascade = CascadeType.ALL)
> @Cascade(org.hibernate.annotations.CascadeType.ALL)
> @JoinTable(name="user_practiced_sports",
> joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"),
> inverseJoinColumns=@JoinColumn(name="sport_id", referencedColumnName="id"))
> @ForeignKey(name = "users_to_sports_fk", inverseName = "sports_to_users_fk")
> private Collection<Sport> practicedSports;
> This is the code I'm executing into the session bean:
> public void modifyUser(User user) {
> entityManager.persist(userLogger.info(user, interpolator.interpolate("#{messages['User.log.modify_data']}")));
> log.debug(interpolator.interpolate("User #{user.name} (#{user.firstName} #{user.lastName}), modify his registration data."));
>
> entityManager.merge(user);
> }
> I'm also attaching the model and a TestNG test case: UserMergeTest
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the hibernate-issues
mailing list