[jboss-user] [EJB 3.0] - Re: Cannot remove entites used in relationships
valatharv
do-not-reply at jboss.com
Tue Dec 2 15:23:34 EST 2008
I need help while deleting child entity, please suggest how can I handle it. I tried posting in seam forum but that is not the right place..
I am stuck and need help... :( new to this...
Entity Overview :
-Project entity can have multiple QuantExperiments.
-QuantExperiment entity can have multiple Reagents and
-Reagent entity can have multiple Treatments.
As per functionalities user can CREATE, UPDATE or DELETE any entity from UI.
I created few Treatments for Reagents and few reagents for experiments, etc.
Now, when I try to delete only ONE treatment from Treatment home it gives exception as :
----------------------
Caused by: javax.persistence.EntityNotFoundException: deleted entity passed to persist: [com.entity.Treatment#]
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:613)
at org.hibernate.ejb.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:299)
at org.jboss.seam.persistence.EntityManagerProxy.flush(EntityManagerProxy.java:90)
at org.jboss.seam.framework.EntityHome.remove(EntityHome.java:108)
at com.TreatmentHome.remove(TreatmentHome.java:86)----------------------
I think it is issue with CascadeType but not able to figure out. "TreatmentHome.remove()" is called while (deleting)
I tried using various combinations for CascadeType like using but no success.
"CascadeType.MERGE,CascadeType.REFRESH,CascadeType.REMOVE" on Reagent.getTreatment() and Treatment.getReagent()
Project entity :
| ----------------
| public class Project
| implements Equals, HashCode, ToString{
| ......
|
| protected List<QuantExperiment> quantExperiment;
|
| @OneToMany(cascade = {CascadeType.ALL}, fetch = FetchType.LAZY, mappedBy="project")
| public List<QuantExperiment> getQuantExperiment() {
| if (quantExperiment == null) {
| quantExperiment = new ArrayList<QuantExperiment>();
| }
| return this.quantExperiment;
| }
|
| public void setQuantExperiment(List<QuantExperiment> quantExperiment) {
| for(QuantExperiment q : quantExperiment){
| q.setProject(this);
| }
| this.quantExperiment = quantExperiment;
| }
QuantExperiment entity :
| ------------------------
| public class QuantExperiment
| implements Equals, HashCode, ToString {
| ......
| protected List<Reagent> reagent;
| protected Project project;
|
| @OneToMany(cascade = {CascadeType.ALL}, , fetch = FetchType.LAZY, mappedBy="quantExperiment")
| public List<Reagent> getReagent() {
| if (reagent == null) {
| reagent = new ArrayList<Reagent>();
| }
| return this.reagent;
| }
|
| public void setReagent(List<Reagent> reagent) {
| for(Reagent r : reagent){
| r.setQuantExperiment(this);
| }
| this.reagent = reagent;
| }
|
| @ManyToOne(cascade = {CascadeType.ALL}, fetch = FetchType.LAZY, optional=false)
| public Project getProject() {
| return project;
| }
| public void setProject(Project project) {
| this.project = project;
| }
Reagent entity :
| ----------------
| public class Reagent
| implements Equals, HashCode, ToString {
| ....
| protected List<Treatment> treatment;
| protected QuantExperiment quantExperiment;
|
| @OneToMany(cascade = {CascadeType.ALL}, fetch = FetchType.LAZY, mappedBy="reagent")
| public List<Treatment> getTreatment() {
| if (treatment == null) {
| treatment = new ArrayList<Treatment>();
| }
| return this.treatment;
| }
| public void setTreatment(List<Treatment> treatment) {
| for(Treatment t : treatment){
| t.setReagent(this);
| }
| this.treatment = treatment;
| }
|
| @ManyToOne(cascade = {CascadeType.ALL}, fetch = FetchType.LAZY, optional=false)
| public QuantExperiment getQuantExperiment() {
| return quantExperiment;
| }
| public void setQuantExperiment(QuantExperiment quantExperiment) {
| this.quantExperiment = quantExperiment;
| }
Treatment entity :
| ------------------
| public class Treatment
| implements Equals, HashCode, ToString {
| ......
| protected Reagent reagent;
| @ManyToOne(cascade = {CascadeType.ALL},optional=false)
| public Reagent getReagent() {
| return reagent;
| }
| public void setReagent(Reagent reagent) {
| this.reagent = reagent;
| }
TreatmentHome.java
| ------------------
| @Name("treatmentHome")
| public class TreatmentHome extends EntityHome<Treatment> {
|
| @In(create = true)
| ReagentHome reagentHome;
| .....
|
| @Override
| public String remove(){
| return super.remove();
| }
| ....
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4193866#4193866
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4193866
More information about the jboss-user
mailing list