-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 5 posts ] 
Author Message
 Post subject: Does hibernate differentiate between collections for caching
PostPosted: Sun Nov 06, 2005 3:23 am 
Beginner
Beginner

Joined: Tue Feb 01, 2005 5:26 pm
Posts: 24
Location: dallas
Need help with Hibernate? Read this first:
http://www.hibernate.org/ForumMailingli ... AskForHelp

Hibernate version:

Hibernate version 3.0

Name and version of the database you are using:
Oracle 9i

Does hibernate differentiate in using second level cache if the collection is Hashset or Sortedset (Having a sort attribute with value as comparator class in the mapping file for element set).

In my application I see the collection of sorted set gets cached (only if they have sort attribute) but not the Hashset.

After going through your code I found the below sniplet which checks for the collection and process it accordingly.

Code:
Class org.hibernate.event.def. WrapVisitor
My EntityMode is POJO.

Object processCollection(Object collection, CollectionType collectionType)
   throws HibernateException {

      if ( collection!=null && (collection instanceof PersistentCollection) ) {

         final SessionImplementor session = getSession();
         PersistentCollection coll = (PersistentCollection) collection;
         if ( coll.setCurrentSession(session) ) {
            reattachCollection( coll, coll.getCollectionSnapshot() );
         }
         return null;

      }
      else {
         return processArrayOrNewCollection(collection, collectionType);
      }

   }

   final Object processArrayOrNewCollection(Object collection, CollectionType collectionType)
   throws HibernateException {

      final SessionImplementor session = getSession();

      if (collection==null) {
         //do nothing
         return null;
      }
      else {
         CollectionPersister persister = session.getFactory().getCollectionPersister( collectionType.getRole() );

         final PersistenceContext persistenceContext = session.getPersistenceContext();
         //TODO: move into collection type, so we can use polymorphism!
         if ( collectionType.hasHolder( session.getEntityMode() ) ) {
            
            if (collection==CollectionType.UNFETCHED_COLLECTION) return null;

            PersistentCollection ah = persistenceContext.getCollectionHolder(collection);
            if (ah==null) {
               ah = collectionType.wrap(session, collection);
               persistenceContext.addNewCollection( ah, persister );
               persistenceContext.addCollectionHolder(ah);
            }
            return null;
         }
         else {

            PersistentCollection persistentCollection = collectionType.wrap(session, collection);
            persistenceContext.addNewCollection( persistentCollection, persister );

            if ( log.isTraceEnabled() ) log.trace( "Wrapped collection in role: " + collectionType.getRole() );

            return persistentCollection; //Force a substitution!

         }

      }

   }


Top
 Profile  
 
 Post subject:
PostPosted: Mon Nov 07, 2005 9:53 pm 
Beginner
Beginner

Joined: Tue Feb 01, 2005 5:26 pm
Posts: 24
Location: dallas
waited for couple of days to get reply from hibernate gurus, but fruitless. So, though a small test case will help in getting your attention.
It would be great if anyone can throw some light on the issue.


Mapping Files
Quote:
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping default-lazy="false"
package="com.test.services.person">
<!-- This is the Hibernate mapping file for Rate Plans. -->

<class name="Person" table="PERSON">
<cache usage="transactional" />
<id name="uuid"
type="com.test.services.util.hibernate.UUIDVarcharType"
column="PERSON_UUID">
<generator class="assigned" />
</id>
<property name="firstName" column="FIRST_NAME" not-null="true" />

<set name="cats" inverse="true" cascade="all">
<cache usage="transactional" />
<key column="CAT_UUID" />
<one-to-many class="Cat" />
</set>
</class>
</hibernate-mapping>

Quote:
<?xml version="1.0"?>
<!-- $Id: Phone.hbm.xml,v 1.5 2005/09/06 19:21:07 amills Exp $ -->
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping default-lazy="false" package="com.test.services.person">
<!-- This is the Hibernate mapping file for Phone. -->

<class name="Cat" table="CAT">
<cache usage="transactional"/>
<id name="catUUID" type="com.test.services.util.hibernate.UUIDVarcharType"
column="CAT_UUID">
<generator class="assigned"/>
</id>

<property name="catName" column="CAT_NAME"/>
<many-to-one name="person" class="Person" column="PERSON_UUID" not-null="true"/>
</class>
</hibernate-mapping>



Code:
/*
* Copyright 2003 Test, Inc. All rights reserved.
* TEST PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package com.test.services.person;
import java.io.Serializable;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
import java.util.logging.Logger;

import com.test.util.UUID;

/**
* @author Catherine  Curtiss
*/
public class Person implements Serializable{
    static final long serialVersionUID = -37888934769379600L;
    Logger logger = Logger.getLogger(Person.class.getName());
   protected UUID uuid;
   protected String firstName;
   protected SortedSet cats;    //list of phone objects
    /**
     * @param uuid
     */
    public Person() {
        this.uuid = new UUID();
        cats=new TreeSet();
    }
    /**
     * @return Returns the cats.
     */
    public SortedSet getCats() {
        if (cats == null) {
            cats = new TreeSet();
        }
        return cats;
    }
    /**
     * @param cats The cats to set.
     */
    public void setCats(Set cats) {
        if(cats instanceof SortedSet) {
            this.cats = (SortedSet) cats;
        }
        else {
            TreeSet ts = new TreeSet(cats);
            this.cats = ts;
        }       
    }
    /**
     * @return Returns the firstName.
     */
    public String getFirstName() {
        return firstName;
    }
    /**
     * @param firstName The firstName to set.
     */
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    /**
     * @return Returns the uuid.
     */
    public UUID getUuid() {
        return uuid;
    }
    /**
     * @param uuid The uuid to set.
     */
    public void setUuid(UUID uuid) {
        this.uuid = uuid;
    }
    public void addCat(Cat cat) {
        if(cats == null) {
            cats = new TreeSet();
        }
        cats.add(cat);
        cat.setPerson(this);
    }
}


Code:
/*
* Copyright 2003 Test, Inc. All rights reserved.
* TEST PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package com.test.services.person;
import java.io.Serializable;
import java.util.logging.Logger;

import com.test.util.UUID;
/**
* @author Catherine  Curtiss
*/
public class Cat implements Serializable {
    static final long serialVersionUID = 5611388090864904258L;
   protected UUID catUUID;
   protected String catName;
    protected Person person;

   //Initialize the logger
   protected static Logger logger =
      Logger.getLogger(Cat.class.getName());
   
   public Cat() {
       catUUID = new UUID();
   }
    /**
     * @return Returns the catName.
     */
    public String getCatName() {
        return catName;
    }
    /**
     * @param catName The catName to set.
     */
    public void setCatName(String catName) {
        this.catName = catName;
    }
    /**
     * @return Returns the catUUID.
     */
    public UUID getCatUUID() {
        return catUUID;
    }
    /**
     * @param catUUID The catUUID to set.
     */
    public void setCatUUID(UUID catUUID) {
        this.catUUID = catUUID;
    }
    /**
     * @return Returns the person.
     */
    public Person getPerson() {
        return person;
    }
    /**
     * @param person The person to set.
     */
    public void setPerson(Person person) {
        this.person = person;
    }
}


Code which creates and loads these objects.

Code:
        Person p=new Person();
        Cat c=new Cat();
        p.setFirstName("test person");
        c.setCatName("test cat");
        p.addCat(c);
        Session s=HibernateUtil.currentSession();
        org.hibernate.Transaction tx=s.beginTransaction();
        s.save(p);
        tx.commit();
        HibernateUtil.closeSession();
        for(int i=0;i<10;i++){
            Session s1=HibernateUtil.currentSession();
            org.hibernate.Transaction tx1=s1.beginTransaction();
            Person p1=(Person)s1.get(Person.class,p.getUuid());
            tx1.commit();
            HibernateUtil.closeSession();
        }
        Session s2=HibernateUtil.currentSession();
        org.hibernate.Transaction tx2=s2.beginTransaction();
        s2.delete(p);
        tx2.commit();
        HibernateUtil.closeSession();


Code:
[11-07-05 19:25:14](F)<205>[TransactionalCache            ]{10} cache lookup: com.test.services.person.Cat#FE2093DF686743F8B5DD9A355B4406D1
[11-07-05 19:25:14](F)<206>[TransactionalCache            ]{10} cache miss
Hibernate: select cat_.CAT_UUID, cat_.CAT_NAME as CAT2_9_, cat_.PERSON_UUID as PERSON3_9_ from CAT cat_ where cat_.CAT_UUID=?
Hibernate: insert into PERSON (FIRST_NAME, PERSON_UUID) values (?, ?)
Hibernate: insert into CAT (CAT_NAME, PERSON_UUID, CAT_UUID) values (?, ?, ?)
[11-07-05 19:25:14](F)<207>[TransactionalCache            ]{10} inserting: com.test.services.person.Person#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:14](F)<208>[TransactionalCache            ]{10} inserting: com.test.services.person.Cat#FE2093DF686743F8B5DD9A355B4406D1
[11-07-05 19:25:14](F)<209>[TransactionalCache            ]{10} cache lookup: com.test.services.person.Person#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:14](F)<210>[TransactionalCache            ]{10} cache hit
Hibernate: select cats0_.CAT_UUID as CAT1_2_, cats0_.CAT_UUID as CAT1_1_, cats0_.CAT_NAME as CAT2_9_1_, cats0_.PERSON_UUID as PERSON3_9_1_, person1_.PERSON_UUID as PERSON1_0_, person1_.FIRST_NAME as FIRST2_46_0_ from CAT cats0_ inner join PERSON person1_ on cats0_.PERSON_UUID=person1_.PERSON_UUID where cats0_.CAT_UUID=?
[11-07-05 19:25:14](F)<211>[TransactionalCache            ]{10} cache lookup: com.test.services.person.Person.cats#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:14](F)<212>[TransactionalCache            ]{10} cache miss
[11-07-05 19:25:14](F)<213>[TransactionalCache            ]{10} caching: com.test.services.person.Person.cats#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:14](F)<214>[TransactionalCache            ]{10} cache lookup: com.test.services.person.Person#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:14](F)<215>[TransactionalCache            ]{10} cache hit
[11-07-05 19:25:14](F)<216>[TransactionalCache            ]{10} cache lookup: com.test.services.person.Person.cats#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:14](F)<217>[TransactionalCache            ]{10} cache miss
Hibernate: select cats0_.CAT_UUID as CAT1_2_, cats0_.CAT_UUID as CAT1_1_, cats0_.CAT_NAME as CAT2_9_1_, cats0_.PERSON_UUID as PERSON3_9_1_, person1_.PERSON_UUID as PERSON1_0_, person1_.FIRST_NAME as FIRST2_46_0_ from CAT cats0_ inner join PERSON person1_ on cats0_.PERSON_UUID=person1_.PERSON_UUID where cats0_.CAT_UUID=?
[11-07-05 19:25:14](F)<218>[TransactionalCache            ]{10} caching: com.test.services.person.Person.cats#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:14](F)<219>[TransactionalCache            ]{10} cache lookup: com.test.services.person.Person#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:14](F)<220>[TransactionalCache            ]{10} cache hit
[11-07-05 19:25:14](F)<221>[TransactionalCache            ]{10} cache lookup: com.test.services.person.Person.cats#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:14](F)<222>[TransactionalCache            ]{10} cache miss
Hibernate: select cats0_.CAT_UUID as CAT1_2_, cats0_.CAT_UUID as CAT1_1_, cats0_.CAT_NAME as CAT2_9_1_, cats0_.PERSON_UUID as PERSON3_9_1_, person1_.PERSON_UUID as PERSON1_0_, person1_.FIRST_NAME as FIRST2_46_0_ from CAT cats0_ inner join PERSON person1_ on cats0_.PERSON_UUID=person1_.PERSON_UUID where cats0_.CAT_UUID=?
[11-07-05 19:25:14](F)<223>[TransactionalCache            ]{10} caching: com.test.services.person.Person.cats#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:14](F)<224>[TransactionalCache            ]{10} cache lookup: com.test.services.person.Person#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:14](F)<225>[TransactionalCache            ]{10} cache hit
[11-07-05 19:25:14](F)<226>[TransactionalCache            ]{10} cache lookup: com.test.services.person.Person.cats#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:14](F)<227>[TransactionalCache            ]{10} cache miss
Hibernate: select cats0_.CAT_UUID as CAT1_2_, cats0_.CAT_UUID as CAT1_1_, cats0_.CAT_NAME as CAT2_9_1_, cats0_.PERSON_UUID as PERSON3_9_1_, person1_.PERSON_UUID as PERSON1_0_, person1_.FIRST_NAME as FIRST2_46_0_ from CAT cats0_ inner join PERSON person1_ on cats0_.PERSON_UUID=person1_.PERSON_UUID where cats0_.CAT_UUID=?
[11-07-05 19:25:14](F)<228>[TransactionalCache            ]{10} caching: com.test.services.person.Person.cats#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:14](F)<229>[TransactionalCache            ]{10} cache lookup: com.test.services.person.Person#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:14](F)<230>[TransactionalCache            ]{10} cache hit
[11-07-05 19:25:14](F)<231>[TransactionalCache            ]{10} cache lookup: com.test.services.person.Person.cats#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:14](F)<232>[TransactionalCache            ]{10} cache miss
Hibernate: select cats0_.CAT_UUID as CAT1_2_, cats0_.CAT_UUID as CAT1_1_, cats0_.CAT_NAME as CAT2_9_1_, cats0_.PERSON_UUID as PERSON3_9_1_, person1_.PERSON_UUID as PERSON1_0_, person1_.FIRST_NAME as FIRST2_46_0_ from CAT cats0_ inner join PERSON person1_ on cats0_.PERSON_UUID=person1_.PERSON_UUID where cats0_.CAT_UUID=?
[11-07-05 19:25:14](F)<233>[TransactionalCache            ]{10} caching: com.test.services.person.Person.cats#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:14](F)<234>[TransactionalCache            ]{10} cache lookup: com.test.services.person.Person#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:14](F)<235>[TransactionalCache            ]{10} cache hit
[11-07-05 19:25:14](F)<236>[TransactionalCache            ]{10} cache lookup: com.test.services.person.Person.cats#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:14](F)<237>[TransactionalCache            ]{10} cache miss
Hibernate: select cats0_.CAT_UUID as CAT1_2_, cats0_.CAT_UUID as CAT1_1_, cats0_.CAT_NAME as CAT2_9_1_, cats0_.PERSON_UUID as PERSON3_9_1_, person1_.PERSON_UUID as PERSON1_0_, person1_.FIRST_NAME as FIRST2_46_0_ from CAT cats0_ inner join PERSON person1_ on cats0_.PERSON_UUID=person1_.PERSON_UUID where cats0_.CAT_UUID=?
[11-07-05 19:25:14](F)<238>[TransactionalCache            ]{10} caching: com.test.services.person.Person.cats#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:14](F)<239>[TransactionalCache            ]{10} cache lookup: com.test.services.person.Person#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:14](F)<240>[TransactionalCache            ]{10} cache hit
[11-07-05 19:25:14](F)<241>[TransactionalCache            ]{10} cache lookup: com.test.services.person.Person.cats#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:14](F)<242>[TransactionalCache            ]{10} cache miss
Hibernate: select cats0_.CAT_UUID as CAT1_2_, cats0_.CAT_UUID as CAT1_1_, cats0_.CAT_NAME as CAT2_9_1_, cats0_.PERSON_UUID as PERSON3_9_1_, person1_.PERSON_UUID as PERSON1_0_, person1_.FIRST_NAME as FIRST2_46_0_ from CAT cats0_ inner join PERSON person1_ on cats0_.PERSON_UUID=person1_.PERSON_UUID where cats0_.CAT_UUID=?
[11-07-05 19:25:14](F)<243>[TransactionalCache            ]{10} caching: com.test.services.person.Person.cats#6A6886761A914AF78725EC79E32B2771
Hibernate: select cats0_.CAT_UUID as CAT1_2_, cats0_.CAT_UUID as CAT1_1_, cats0_.CAT_NAME as CAT2_9_1_, cats0_.PERSON_UUID as PERSON3_9_1_, person1_.PERSON_UUID as PERSON1_0_, person1_.FIRST_NAME as FIRST2_46_0_ from CAT cats0_ inner join PERSON person1_ on cats0_.PERSON_UUID=person1_.PERSON_UUID where cats0_.CAT_UUID=?
[11-07-05 19:25:14](F)<244>[TransactionalCache            ]{10} cache lookup: com.test.services.person.Person#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:14](F)<245>[TransactionalCache            ]{10} cache hit
[11-07-05 19:25:14](F)<246>[TransactionalCache            ]{10} cache lookup: com.test.services.person.Person.cats#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:14](F)<247>[TransactionalCache            ]{10} cache miss
[11-07-05 19:25:14](F)<248>[TransactionalCache            ]{10} caching: com.test.services.person.Person.cats#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:14](F)<249>[TransactionalCache            ]{10} cache lookup: com.test.services.person.Person#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:14](F)<250>[TransactionalCache            ]{10} cache hit
[11-07-05 19:25:14](F)<251>[TransactionalCache            ]{10} cache lookup: com.test.services.person.Person.cats#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:14](F)<252>[TransactionalCache            ]{10} cache miss
Hibernate: select cats0_.CAT_UUID as CAT1_2_, cats0_.CAT_UUID as CAT1_1_, cats0_.CAT_NAME as CAT2_9_1_, cats0_.PERSON_UUID as PERSON3_9_1_, person1_.PERSON_UUID as PERSON1_0_, person1_.FIRST_NAME as FIRST2_46_0_ from CAT cats0_ inner join PERSON person1_ on cats0_.PERSON_UUID=person1_.PERSON_UUID where cats0_.CAT_UUID=?
[11-07-05 19:25:14](F)<253>[TransactionalCache            ]{10} caching: com.test.services.person.Person.cats#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:15](F)<254>[TransactionalCache            ]{10} cache lookup: com.test.services.person.Person#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:15](F)<255>[TransactionalCache            ]{10} cache hit
[11-07-05 19:25:15](F)<256>[TransactionalCache            ]{10} cache lookup: com.test.services.person.Person.cats#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:15](F)<257>[TransactionalCache            ]{10} cache miss
Hibernate: select cats0_.CAT_UUID as CAT1_2_, cats0_.CAT_UUID as CAT1_1_, cats0_.CAT_NAME as CAT2_9_1_, cats0_.PERSON_UUID as PERSON3_9_1_, person1_.PERSON_UUID as PERSON1_0_, person1_.FIRST_NAME as FIRST2_46_0_ from CAT cats0_ inner join PERSON person1_ on cats0_.PERSON_UUID=person1_.PERSON_UUID where cats0_.CAT_UUID=?
[11-07-05 19:25:15](F)<258>[TransactionalCache            ]{10} caching: com.test.services.person.Person.cats#6A6886761A914AF78725EC79E32B2771
[11-07-05 19:25:15](F)<259>[TransactionalCache            ]{10} cache lookup: com.test.services.person.Cat#FE2093DF686743F8B5DD9A355B4406D1
Hibernate: delete from CAT where CAT_UUID=?
[11-07-05 19:25:15](F)<260>[TransactionalCache            ]{10} cache hit
Hibernate: delete from PERSON where PERSON_UUID=?


Top
 Profile  
 
 Post subject:
PostPosted: Mon Nov 07, 2005 10:55 pm 
Beginner
Beginner

Joined: Tue Feb 01, 2005 5:26 pm
Posts: 24
Location: dallas
Quote:
Don't do that, the getter should return the instance provided by the setter or Hibernate will treat it as a new Collection with new children. This is clearly stated in the docs: what you're doing is called derefencing the collection. Hibernate uses its own implementation of the standard Collection interfaces, so you can't use your own implementation class. Just stick to using the interface. If you want the collection to be ordered, use a List or adjust your mapping (I think Hibernate supports sorted sets, but don't know how exactly from the top of my head)


I found the above in http://forum.hibernate.org/viewtopic.php?t=946235&highlight=derefencing+collection

Is there a work arround where you can still write your logic code in getters, setters and still be able to avoid dereferencing the collection.


Top
 Profile  
 
 Post subject: Pseudo-dereferencing: backing.
PostPosted: Mon Nov 07, 2005 11:07 pm 
Expert
Expert

Joined: Thu Dec 23, 2004 9:08 pm
Posts: 2008
There is. In your mapping class, you use one pair of accessor/mutator methods: getPrivateCollection and setPrivateCollection. Don't put these formal definitions in the interface for the class: instead use getCollection (there shouldn't be a need for setCollection). The collection that this method returns is backed by the real collection.

This is the pattern that iterator(), Collections.checkedCollection(), Collections.unmodifiableCollection(), etc. all use. It does require that you implement another class, MyCollection, which extends whatever collection you've put in the mapping, but that's not hard. The jdk provides you with abstract implementations of all collection types.

If you want to implement only a trivial subset of the collection methods (e.g. you only need a fifo list so you only need get, put, and remove methods) then you could put the methods directly into the mapped class (though not into the mapping, of course). This is a much simpler solution, but much less elegant.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Nov 10, 2005 12:52 pm 
Beginner
Beginner

Joined: Tue Feb 01, 2005 5:26 pm
Posts: 24
Location: dallas
I figured out what the problem was and posting it so that it will be helpful to others.
regarding the 1 and 2 question i dont know why that happens and ever i am not worried about them.
but regarding the 3 question where it does not cache the collections the problem was in my bean i declared the collections as list and in the mapping file it was defined as set, and i tried converting the set to list and list to set in getters and setters which created problems.
like eg.
Code:
protected List list;
public void setXXX(set yyy)
{
    //i am iterating through the set and adding it to the
    // list
}

and similarly the get method.


I changed the variable to Set insted of List and it worked. I read somewhere saying the reference to the collection is lost, but i dont know how that reference gets lost when its not doing the deep copy.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 5 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.