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