Re: [Resin-interest] cascade persist with Amber

2008-04-03 Thread Scott Ferguson

On Mar 31, 2008, at 2:58 AM, Torkil Svensgaard wrote:

> Hi list
>
> I'm playing around a bit with Amber and can't seem to get cascading  
> persist to work. The attached code runs fine but doesn't persist the  
> competences, only the search.
>
> Have I misunderstood something?

Based on the bug report, this looks like a problem with class-change  
detection and reloading.  The next snapshot will include that fix.  I  
added a few extra tests for cascaded persistence, and the persistence  
itself seems to be working fine.

-- Scott

>
>
> Thanks in advance,
>
> Torkil
> package com.scr.data.search.entity;
>
> import java.util.Set;
>
> import javax.persistence.CascadeType;
> import javax.persistence.Entity;
> import javax.persistence.GeneratedValue;
> import javax.persistence.Id;
> import javax.persistence.OneToMany;
>
> @Entity
> public class Search {
>   
>   @Id
>   @GeneratedValue
>   private int _id;
>   @OneToMany(mappedBy="search", cascade={CascadeType.ALL})
>   private Set competences;
>   public int get_id() {
>   return _id;
>   }
>   public void set_id(int _id) {
>   this._id = _id;
>   }
>   public Set getCompetences() {
>   return competences;
>   }
>   public void setCompetences(Set competences) {
>   this.competences = competences;
>   }
> }
> package com.scr.data.search.entity;
>
> import javax.persistence.Entity;
> import javax.persistence.GeneratedValue;
> import javax.persistence.Id;
> import javax.persistence.JoinColumn;
> import javax.persistence.ManyToOne;
>
> @Entity
> public class Competence {
>   
>   @Id
>   @GeneratedValue
>   private int _id;
>   private String _name;
>   private int _level;
>   private int _experience;
>   private int _last;
>   @ManyToOne
>   @JoinColumn(name="search")
>   private Search search;
>   
>   public int get_id() {
>   return _id;
>   }
>   public void set_id(int _id) {
>   this._id = _id;
>   }
>   public String get_name() {
>   return _name;
>   }
>   public void set_name(String _name) {
>   this._name = _name;
>   }
>   public int get_level() {
>   return _level;
>   }
>   public void set_level(int _level) {
>   this._level = _level;
>   }
>   public int get_experience() {
>   return _experience;
>   }
>   public void set_experience(int _experience) {
>   this._experience = _experience;
>   }
>   public int get_last() {
>   return _last;
>   }
>   public void set_last(int _last) {
>   this._last = _last;
>   }
>
>   public Search getSearch() {
>   return search;
>   }
>   public void setSearch(Search search) {
>   this.search = search;
>   }
>
> }
> package com.scr.inhouse.test;
>
> import java.io.IOException;
> import java.io.PrintWriter;
> import java.util.HashSet;
>
> import javax.ejb.TransactionAttribute;
> import javax.persistence.EntityManager;
> import javax.persistence.PersistenceContext;
> import javax.servlet.http.HttpServlet;
> import javax.servlet.http.HttpServletRequest;
> import javax.servlet.http.HttpServletResponse;
>
> import com.scr.data.search.entity.Competence;
> import com.scr.data.search.entity.Search;
>
> public class TestServlet extends HttpServlet {
>
>   private static final long serialVersionUID = -6604204182506392192L;
>   @PersistenceContext(name="search")
>   private EntityManager _manager;
>   
>   @Override
>   protected void doGet(HttpServletRequest request,  
> HttpServletResponse response) throws IOException {
>   
>   PrintWriter out = response.getWriter();
>   response.setContentType("text/html");
>   
>   insert(out);
>   }
>   
>   @TransactionAttribute
>   protected void insert(PrintWriter out) {
>   Search search = new Search();
>   
>   HashSet competences = new HashSet();
>   
>   Competence competence1 = new Competence();
>   competence1.set_level(5);
>   competence1.set_name("Java");
>   
>   competences.add(competence1);
>   
>   Competence competence2 = new Competence();
>   competence2.set_level(5);
>   competence2.set_name("PHP");
>   
>   competences.add(competence2);
>   
>   System.out.println(competences);
>   
>   search.setCompetences(competences);
>   
>   _manager.persist(search);
>   
>   }
> }
> ___
> resin-interest mailing list
> resin-interest@caucho.com
> h

[Resin-interest] cascade persist with Amber

2008-03-31 Thread Torkil Svensgaard

Hi list

I'm playing around a bit with Amber and can't seem to get cascading 
persist to work. The attached code runs fine but doesn't persist the 
competences, only the search.


Have I misunderstood something?

Thanks in advance,

Torkil
package com.scr.data.search.entity;

import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;

@Entity
public class Search {

@Id
@GeneratedValue
private int _id;
@OneToMany(mappedBy="search", cascade={CascadeType.ALL}) 
private Set competences;
public int get_id() {
return _id;
}
public void set_id(int _id) {
this._id = _id;
}
public Set getCompetences() {
return competences;
}
public void setCompetences(Set competences) {
this.competences = competences;
}
}
package com.scr.data.search.entity;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@Entity
public class Competence {
 
@Id
@GeneratedValue
private int _id;
private String _name;
private int _level;
private int _experience;
private int _last;
@ManyToOne
@JoinColumn(name="search")
private Search search;

public int get_id() {
return _id;
}
public void set_id(int _id) {
this._id = _id;
}
public String get_name() {
return _name;
}
public void set_name(String _name) {
this._name = _name;
}
public int get_level() {
return _level;
}
public void set_level(int _level) {
this._level = _level;
}
public int get_experience() {
return _experience;
}
public void set_experience(int _experience) {
this._experience = _experience;
}
public int get_last() {
return _last;
}
public void set_last(int _last) {
this._last = _last;
}

public Search getSearch() {
return search;
}
public void setSearch(Search search) {
this.search = search;
}

}
package com.scr.inhouse.test;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashSet;

import javax.ejb.TransactionAttribute;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.scr.data.search.entity.Competence;
import com.scr.data.search.entity.Search;

public class TestServlet extends HttpServlet {

private static final long serialVersionUID = -6604204182506392192L;
@PersistenceContext(name="search")
private EntityManager _manager;

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse 
response) throws IOException {

PrintWriter out = response.getWriter();
response.setContentType("text/html");

insert(out);
}

@TransactionAttribute
protected void insert(PrintWriter out) {
Search search = new Search();

HashSet competences = new HashSet();

Competence competence1 = new Competence();
competence1.set_level(5);
competence1.set_name("Java");

competences.add(competence1);

Competence competence2 = new Competence();
competence2.set_level(5);
competence2.set_name("PHP");

competences.add(competence2);

System.out.println(competences);

search.setCompetences(competences);

_manager.persist(search);

}
}
___
resin-interest mailing list
resin-interest@caucho.com
http://maillist.caucho.com/mailman/listinfo/resin-interest