[hibernate-issues] [Hibernate-JIRA] Commented: (EJB-313) delete twice triggers detached entity error, but change to composite primary key and the exception is gone.
David J. M. Karlsen (JIRA)
noreply at atlassian.com
Mon Jul 20 12:21:13 EDT 2009
[ http://opensource.atlassian.com/projects/hibernate/browse/EJB-313?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=33639#action_33639 ]
David J. M. Karlsen commented on EJB-313:
-----------------------------------------
Any news on this?
> delete twice triggers detached entity error, but change to composite primary key and the exception is gone.
> -----------------------------------------------------------------------------------------------------------
>
> Key: EJB-313
> URL: http://opensource.atlassian.com/projects/hibernate/browse/EJB-313
> Project: Hibernate Entity Manager
> Issue Type: Bug
> Affects Versions: 3.2.0.cr3
> Environment: Windows XP Professional + Postgres 8.1 + Spring 2 + JPA + Hibernate 3.2.3
> Reporter: Simon Ng
> Attachments: DeleteTwice.zip
>
>
> The attached file DeleteTwice.zip has the entire project; and the primary key is a composite primary key. Run the unit test and there is no exception, just an INFO level message of "handling transient entity in delete processing".
> Next, delete RestaurantPK.java, and change Restaurant.java to use a simple primary key:
> package blog.jpa.domain;
> import java.util.Set;
> import javax.persistence.CascadeType;
> import javax.persistence.Entity;
> import javax.persistence.GeneratedValue;
> import javax.persistence.GenerationType;
> import javax.persistence.Id;
> import javax.persistence.JoinColumn;
> import javax.persistence.JoinTable;
> import javax.persistence.ManyToMany;
> import javax.persistence.OneToOne;
> @Entity
> public class Restaurant {
> @Id
> @GeneratedValue(strategy = GenerationType.AUTO)
> private long id;
> private String name;
> public long getId() {
> return id;
> }
> public void setId(long id) {
> this.id = id;
> }
> public String getName() {
> return name;
> }
> public void setName(String name) {
> this.name = name;
> }
> }
> Change the onSetUpInTransaction to use different SQL statement to reflect a different table
> protected void onSetUpInTransaction() throws Exception {
> jdbcTemplate.execute("insert into restaurant (id, name) values (1, 'Burger Barn')");
> jdbcTemplate.execute("insert into restaurant (id, name) values (2, 'Veggie Village')");
> jdbcTemplate.execute("insert into restaurant (id, name) values (3, 'Dover Diner')");
> }
> drop the table restaurant and run the unit test again. Now there is an exception
> [junit] Testcase: testDeleteRestaurant(blog.jpa.dao.JpaRestaurantDaoTests): Caused an ERROR
> [junit] Removing a detached instance blog.jpa.domain.Restaurant#3; nested exception is java.lang.IllegalArgumentExce
> ption: Removing a detached instance blog.jpa.domain.Restaurant#3
> [junit] org.springframework.dao.InvalidDataAccessApiUsageException: Removing a detached instance blog.jpa.domain.Res
> taurant#3; nested exception is java.lang.IllegalArgumentException: Removing a detached instance blog.jpa.domain.Restaura
> nt#3
> [junit] Caused by: java.lang.IllegalArgumentException: Removing a detached instance blog.jpa.domain.Restaurant#3
> [junit] at org.hibernate.ejb.event.EJB3DeleteEventListener.performDetachedEntityDeletionCheck(EJB3DeleteEventLis
> tener.java:45)
> The java.lang.IllegalArgumentException is specified in the JPA spec.
--
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