org.hibernate.exception.DataException: could not initialize
ernest210 Jan 23, 2007 4:18 PMMy problem.
I have two class Client and Book with relations OneToMany set on cascade "REMOVE".
Now I must change scope "SESSION" on "CONVERSATION".
Now (after the change) when i execute delete method on Client i have error. When scope is set on SESSION everything is ok but when is set on CONVERSATION then I have error. Why? PLEASE HELP!
How it looks:
Client CLASS
package pl.test.client;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.jboss.seam.annotations.Name;
@Entity
@Name("client")
@Table(name="clients")
public class Client implements Serializable {
/**
*
*/
private static final long serialVersionUID = -3074021688217036261L;
private int id;
private String name;
private Set<Investment> books = new HashSet<Investment>();
@Id @GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@OneToMany(cascade=CascadeType.REMOVE, mappedBy="client")
public Set<Investment> getBooks() {
return books;
}
public void setBooks(Set<Investment> books) {
this.books = books;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Book CLASS
package pl.test.client;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Table;
import org.jboss.seam.annotations.Name;
@Entity
@Name("book")
@Table(name="books")
public class Book implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1624659788044987338L;
private int id;
private String bookname;
private Client client;
@JoinColumn(name="books")
public String getBookname() {
return bookname;
}
public void setBookname(String bookname) {
this.bookname = bookname;
}
public Client getClient() {
return client;
}
public void setClient(Client client) {
this.client = client;
}
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
And MANAGER who i execute
package pl.test.client;
import static javax.persistence.PersistenceContextType.EXTENDED;
import java.io.Serializable;
import java.util.List;
import javax.ejb.Remove;
import javax.ejb.Stateful;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.jboss.seam.annotations.Begin;
import org.jboss.seam.annotations.Destroy;
import org.jboss.seam.annotations.End;
import org.jboss.seam.annotations.Factory;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Logger;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Out;
import org.jboss.seam.annotations.datamodel.DataModel;
import org.jboss.seam.log.Log;
@Stateful
@Name("clientManager")
public class ClientManagerBean implements Serializable, ClientManager{
/**
*
*/
private static final long serialVersionUID = 6887290828466517147L;
@DataModel
private List<Client> clientsList;
@In(required = false)
@Out(required = false)
private Client client;
@PersistenceContext(type=EXTENDED)
private EntityManager em;
public void delete() {
if (client!=null){
client = em.merge(client);
clientsList.remove(client);
em.remove(client);
client=null;
}
}
@Factory("clientsList")
public void findClients() {
clientsList = em.createQuery("from Client cli").getResultList();
}
@Remove
@Destroy
public void destroy() {
}
}