-->
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.  [ 15 posts ] 
Author Message
 Post subject: Apache JCS still have object ids though I've just deleted!
PostPosted: Thu Dec 04, 2003 4:42 am 
Regular
Regular

Joined: Wed Aug 27, 2003 2:55 am
Posts: 90
Location: Sweden
Hi,

I'm facing a problem where I delete an object from the db, works fine! Afterwards I try to load the object graph which previously had an object deleted from the object graph.
I can see from the log that JCS has a cache miss on the object I'd currently deleted, but tries to load it from the db.

Somethings is wrong!!!

Workflow:

1. Client loads object graph from db in Session1
2. Client deletes an object from the object graph (from object graph in memory with the client) and calls session.delete() on that particular object with a new Session (Session2)
3. Client tries to load the same object graph by it's pk in another Session (Session3), but fails due to the ObjectNotFoundException

Could anyone give me some hints?

Kind regards, Andreas


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 04, 2003 5:55 am 
Regular
Regular

Joined: Wed Aug 27, 2003 2:55 am
Posts: 90
Location: Sweden
I saw that when I load the object graph of the following structure:

Object1 --> contains reference to Object2 id 1
Object1 --> contains reference to Object2 id 2

JCS cache will invalidate and release the Object2 id 2, why???

This amazes me!

So if I perform 2 loads on object graph after eachother the Object2 id 2 will be materialized and loaded from db 'cause it doesn't exists in JCS cache in the second load.

This isn't very good...

Please help!

Kind regards, Andreas


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 04, 2003 6:27 am 
Hibernate Team
Hibernate Team

Joined: Tue Aug 26, 2003 12:50 pm
Posts: 5130
Location: Melbourne, Australia
Regarding your first post, I think the explanation is pretty clear: remove the object from any associations that reference it before deleting it, so that those associations are updated in the second-level cache.

I have no idea what you are trying to say in the second post.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 04, 2003 6:44 am 
Regular
Regular

Joined: Wed Aug 27, 2003 2:55 am
Posts: 90
Location: Sweden
Well I'm desperate so the 2nd post may be somewhat unclear.

The thing is I do the following before calling Session.delete() on the object:

Code:
myBObjectWhichIsGoingToBeDeleted.getMyParentObjectA().getBObjects().remove(myBObjectWhichIsGoingToBeDeleted);


Object structure
Code:
A one-to-many B


A.hbm.xml relation mapping
Code:
<set="bs" inverse="true" cascade="all">
    <jcs-cache usage="read-write"/>
    <key column="a_id"/>
    <one-to-many class="B"/>
</set>


B.hbm.xml relation mapping
Code:
<many-to-one
    name="a"
    class="A"
    column="a_id"
    not-null="true"
    cascade="save-update"
/>


Regards, Andreas


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 04, 2003 6:51 am 
Hibernate Team
Hibernate Team

Joined: Tue Aug 26, 2003 12:50 pm
Posts: 5130
Location: Melbourne, Australia
Quote:
The thing is I do the following before calling Session.delete() on the object


So, find out why that is not working then. Did you implement equals()/hashCode() sensibly on myObjectWhichIsGoingToBeDeleted? Does the object actually get removed from the set? When you enable Hibernate logging, do you see the second-level cache being updated (for both the object and the collection)?

A word of advice: you will never solve any problem while you are "desperate". Go home, come back to it tomorrow. Especially, don't post here unless you are completely clear-headed. It is incredibly difficult to understand other people's problems from the other side of the world, so we need them to be able to communicate properly and help _themselves_.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 04, 2003 7:03 am 
Regular
Regular

Joined: Wed Aug 27, 2003 2:55 am
Posts: 90
Location: Sweden
I've been struggeling with this problem for several days by now. I've tried to evict the object. Implement different ways of loading the object etc.

I have a convinience method on the value object

Code:
class MyBObject {
    ...

    public void delete() {
        this.getMyParentObjectA().getBobjects().remove(this);
        // Following line logs "false"
        log.debug(this.getMyParentObjectA().getBobjects().contains(this));
    }
}


Method equals is auto-generated by Apache common-lang when generating hbm.xml from db with Middlegen.

Method hashCode() isn't implemented, uses inherited from java.lang.Object.

I can see SessionImpl making deletions to object and to collections.
I can se ReadWriteCache invalidating objects by its ids.
I can se ReadWriteCache releasing objects by its ids.
I can see SQL delete queries.

But when I try to load the object graph after deletion in another session/transaction the MyAObject have a reference to the id of MyDeletedBObject and tries to load it since it gets a cache miss in JCS.

A try to calm myself a bit, I'm sorry!

Kind regards, Andreas


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 04, 2003 7:16 am 
Hibernate Team
Hibernate Team

Joined: Tue Aug 26, 2003 12:50 pm
Posts: 5130
Location: Melbourne, Australia
Quote:
Method equals is auto-generated by Apache common-lang when generating hbm.xml from db with Middlegen.
Method hashCode() isn't implemented, uses inherited from java.lang.Object.


Please read the JavaDoc for java.lang.Object or even better a book like "Effective Java".

When you have fixed your equals()/hashCode() implementation, check the log *again* and make sure that Hibernate invalidates the "A.bobjects" collection role as well as the MyBObject. If it does not, go back and fix your equals()/hashCode() again.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 04, 2003 7:25 am 
Hibernate Team
Hibernate Team

Joined: Tue Aug 26, 2003 12:50 pm
Posts: 5130
Location: Melbourne, Australia
P.S. Heres another hint. Change your method to look like this:

Code:
    public void delete() {
        log.debug( "before: " + this.getMyParentObjectA().getBobjects() );
        this.getMyParentObjectA().getBobjects().remove(this);
        log.debug( "after: " + this.getMyParentObjectA().getBobjects() );
    }


And show us what goes to the log.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 04, 2003 9:30 am 
Regular
Regular

Joined: Wed Aug 27, 2003 2:55 am
Posts: 90
Location: Sweden
I've implemented equals() and hashCode() like this in BVO:

Code:
public boolean equals(Object object) {

    if (object == null) {
        return false;
    }

    if (object == this) {
        return true;
    }

    if (!(object instanceof BVO)) {
        return false;
    }

    BVO myObject = (BVO) object;

    if (property1 != null && !property1.equals(myObject.property1)) {
        return false;
    }

    // And so on for all properties in BVO.java
    // Even for the object refernce and collection containing object ref.

    return true;
}

public int hashCode() {
    int hash = 17;
    hash = 37 * hash + (property1 == null ? 0 : property1.hashCode());
   
    // And so on for all properties in BVO.java

    return hash;
}


The object structure looks like this:
Code:
A one-to-many B


Bi-directional, using inverse="true", using jcs cache=read-write, cascade="all" from AVO to BVO, cascade="save-update" from BVO to AVO (many-to-one).

From client I perform this:

1. Delete one BVO from AVO (in Session1)
2. Tries to load the AVO (in Session2)

Here's the log, cannot see that AVO.bVOs gets invalidated???

Code:
DELETING

14:03:13,793 DEBUG HibernateTransactionManager:181 - Opening new session for Hibernate transaction
14:03:13,793 DEBUG SessionFactoryUtils:119 - Opening Hibernate session
14:03:13,793 DEBUG SessionImpl:413 - opened session
14:03:13,793 DEBUG HibernateTransactionManager:70 - Using transaction object [org.springframework.orm.hibernate.HibernateTransactionObject@114b82b]
14:03:13,793 DEBUG HibernateTransactionManager:195 - Beginning Hibernate transaction
14:03:13,793 DEBUG JDBCTransaction:36 - begin
14:03:13,793 DEBUG ThreadObjectManager:76 - Bound value [org.springframework.orm.hibernate.SessionHolder@147358f] for key [net.sf.hibernate.impl.SessionFactoryImpl@81a197] to thread [main]
14:03:13,793 DEBUG ThreadObjectManager:76 - Bound value [org.springframework.jdbc.datasource.ConnectionHolder@d5eb7] for key [org.apache.commons.dbcp.BasicDataSource@149105b] to thread [main]
14:03:13,793 DEBUG BVO:168 - returning parent AVO@7976c1[a_uic=2C90AA1E-00F9-00F9-0001-FFFFF9415565]
14:03:13,793 DEBUG BVO:168 - returning parent AVO@7976c1[a_uic=2C90AA1E-00F9-00F9-0001-FFFFF9415565]
14:03:13,793 DEBUG BVO:328 - before: [BVO@1b01afa[b_uic=2C90AA1E-00F9-00F9-0002-FFFFF9415565,a_uic=AVO@7976c1[a_uic=2C90AA1E-00F9-00F9-0001-FFFFF9415565]]]
14:03:13,793 DEBUG BVO:168 - returning parent AVO@7976c1[a_uic=2C90AA1E-00F9-00F9-0001-FFFFF9415565]
14:03:13,793 DEBUG BVO:168 - returning parent AVO@7976c1[a_uic=2C90AA1E-00F9-00F9-0001-FFFFF9415565]
14:03:13,793 DEBUG BVO:332 - after: []
14:03:13,793 DEBUG XmlBeanFactory:231 - Returning cached instance of singleton bean 'bController'
14:03:13,809 DEBUG ThreadObjectManager:59 - Retrieved value [org.springframework.orm.hibernate.SessionHolder@147358f] for key [net.sf.hibernate.impl.SessionFactoryImpl@81a197] bound to thread [main]
14:03:13,809 DEBUG ThreadObjectManager:59 - Retrieved value [org.springframework.orm.hibernate.SessionHolder@147358f] for key [net.sf.hibernate.impl.SessionFactoryImpl@81a197] bound to thread [main]
14:03:13,809 DEBUG SessionImpl:896 - deleting a transient instance
14:03:13,809 DEBUG BVO:168 - returning parent AVO@7976c1[a_uic=2C90AA1E-00F9-00F9-0001-FFFFF9415565]
14:03:13,809 DEBUG BVO:168 - returning parent AVO@7976c1[a_uic=2C90AA1E-00F9-00F9-0001-FFFFF9415565]
14:03:13,809 DEBUG SessionImpl:941 - deleting [BVO#2C90AA1E-00F9-00F9-0002-FFFFF9415565]
14:03:13,809 DEBUG Cascades:237 - unsaved-value strategy NULL
14:03:13,809 DEBUG Cascades:336 - processing cascades for: BVO
14:03:13,809 DEBUG Cascades:275 - cascading to collection: BVO.cVOs
14:03:13,809 DEBUG Cascades:275 - cascading to collection: BVO.bdVOs
14:03:13,825 DEBUG Cascades:344 - done processing cascades for: BVO
14:03:13,825 DEBUG Cascades:336 - processing cascades for: BVO
14:03:13,825 DEBUG Cascades:344 - done processing cascades for: BVO
14:03:13,825 DEBUG ThreadObjectManager:59 - Retrieved value [org.springframework.orm.hibernate.SessionHolder@147358f] for key [net.sf.hibernate.impl.SessionFactoryImpl@81a197] bound to thread [main]
14:03:13,825 DEBUG HibernateTransactionManager:119 - Triggering beforeCommit synchronization
14:03:13,825 DEBUG HibernateTransactionManager:259 - Flushing Hibernate session on transaction commit
14:03:13,825 DEBUG SessionImpl:2011 - flushing session
14:03:13,825 DEBUG SessionImpl:2113 - Flushing entities and processing referenced collections
14:03:13,825 DEBUG SessionImpl:2397 - Processing unreferenced collections
14:03:13,825 DEBUG SessionImpl:2602 - Collection dereferenced: [BVO.cVOs#2C90AA1E-00F9-00F9-0002-FFFFF9415565]
14:03:13,825 DEBUG SessionImpl:2602 - Collection dereferenced: [BVO.bdVOs#2C90AA1E-00F9-00F9-0002-FFFFF9415565]
14:03:13,825 DEBUG SessionImpl:2408 - Scheduling collection removes/(re)creates/updates
14:03:13,825 DEBUG SessionImpl:2023 - Flushed: 0 insertions, 0 updates, 1 deletions to 1 objects
14:03:13,825 DEBUG SessionImpl:2028 - Flushed: 0 (re)creations, 0 updates, 2 removals to 2 collections
14:03:13,825 DEBUG SessionImpl:2058 - executing flush
14:03:13,825 DEBUG ReadWriteCache:46 - Invalidating: 2C90AA1E-00F9-00F9-0002-FFFFF9415565
14:03:13,840 DEBUG ReadWriteCache:46 - Invalidating: 2C90AA1E-00F9-00F9-0002-FFFFF9415565
14:03:13,840 DEBUG ReadWriteCache:46 - Invalidating: 2C90AA1E-00F9-00F9-0002-FFFFF9415565
14:03:13,840 DEBUG EntityPersister:548 - Deleting entity: BVO#2C90AA1E-00F9-00F9-0002-FFFFF9415565
14:03:13,840 DEBUG BatcherImpl:166 - about to open: 0 open PreparedStatements, 0 open ResultSets
14:03:13,840 DEBUG SessionFactoryImpl:526 - prepared statement get: delete from B where b_uic=?
Hibernate: delete from B where b_uic=?
14:03:13,840 DEBUG SessionFactoryImpl:536 - preparing statement
14:03:13,840 DEBUG StringType:44 - binding '2C90AA1E-00F9-00F9-0002-FFFFF9415565' to parameter: 1
14:03:13,840 DEBUG BatcherImpl:173 - done closing: 0 open PreparedStatements, 0 open ResultSets
14:03:13,840 DEBUG SessionFactoryImpl:554 - closing statement
14:03:13,840 DEBUG SessionImpl:2428 - post flush
14:03:13,840 DEBUG HibernateTransactionManager:277 - Committing Hibernate transaction
14:03:13,840 DEBUG JDBCTransaction:54 - commit
14:03:13,856 DEBUG SessionImpl:447 - transaction completion
14:03:13,856 DEBUG ReadWriteCache:75 - Releasing: 2C90AA1E-00F9-00F9-0002-FFFFF9415565
14:03:13,856 DEBUG ReadWriteCache:75 - Releasing: 2C90AA1E-00F9-00F9-0002-FFFFF9415565
14:03:13,856 DEBUG ReadWriteCache:75 - Releasing: 2C90AA1E-00F9-00F9-0002-FFFFF9415565
14:03:13,856 DEBUG ThreadObjectManager:92 - Removed value [org.springframework.orm.hibernate.SessionHolder@147358f] for key [net.sf.hibernate.impl.SessionFactoryImpl@81a197] from thread [main]
14:03:13,856 DEBUG ThreadObjectManager:92 - Removed value [org.springframework.jdbc.datasource.ConnectionHolder@d5eb7] for key [org.apache.commons.dbcp.BasicDataSource@149105b] from thread [main]
14:03:13,856 DEBUG HibernateTransactionManager:372 - Closing Hibernate session after transaction
14:03:13,856 DEBUG SessionFactoryUtils:201 - Closing Hibernate session
14:03:13,856 DEBUG SessionImpl:435 - closing session
14:03:13,856 DEBUG SessionImpl:2930 - disconnecting session
14:03:13,856 DEBUG SessionImpl:447 - transaction completion
14:03:13,856 DEBUG HibernateTransactionManager:207 - Triggering afterCompletion synchronization

LOADING

14:03:13,856 DEBUG SessionFactoryUtils:119 - Opening Hibernate session
14:03:13,856 DEBUG SessionImpl:413 - opened session
14:03:13,871 DEBUG SessionImpl:1752 - loading [AVO#2C90AA1E-00F9-00F9-0001-FFFFF9415565]
14:03:13,871 DEBUG SessionImpl:1843 - attempting to resolve [AVO#2C90AA1E-00F9-00F9-0001-FFFFF9415565]
14:03:13,871 DEBUG ReadWriteCache:24 - Cache lookup: 2C90AA1E-00F9-00F9-0001-FFFFF9415565
14:03:13,871 DEBUG ReadWriteCache:33 - Cache hit: 2C90AA1E-00F9-00F9-0001-FFFFF9415565
14:03:13,871 DEBUG SessionImpl:1867 - resolved object in JCS cache [AVO#2C90AA1E-00F9-00F9-0001-FFFFF9415565]
14:03:13,871 DEBUG CollectionPersister:293 - Searching for collection in cache: AVO.bVOs#2C90AA1E-00F9-00F9-0001-FFFFF9415565
14:03:13,871 DEBUG ReadWriteCache:24 - Cache lookup: 2C90AA1E-00F9-00F9-0001-FFFFF9415565
14:03:13,871 DEBUG ReadWriteCache:33 - Cache hit: 2C90AA1E-00F9-00F9-0001-FFFFF9415565
14:03:13,871 DEBUG SessionImpl:1752 - loading [BVO#2C90AA1E-00F9-00F9-0002-FFFFF9415565]
14:03:13,871 DEBUG SessionImpl:1843 - attempting to resolve [BVO#2C90AA1E-00F9-00F9-0002-FFFFF9415565]
14:03:13,871 DEBUG ReadWriteCache:24 - Cache lookup: 2C90AA1E-00F9-00F9-0002-FFFFF9415565
14:03:13,871 DEBUG ReadWriteCache:37 - Cache miss: 2C90AA1E-00F9-00F9-0002-FFFFF9415565
14:03:13,871 DEBUG SessionImpl:1887 - object not resolved in any cache [BVO#2C90AA1E-00F9-00F9-0002-FFFFF9415565]
14:03:13,887 DEBUG EntityPersister:394 - Materializing entity: BVO#2C90AA1E-00F9-00F9-0002-FFFFF9415565
14:03:13,887 DEBUG BatcherImpl:166 - about to open: 0 open PreparedStatements, 0 open ResultSets
14:03:13,887 DEBUG SessionFactoryImpl:526 - prepared statement get: select avo1_.a_uic as a_uic0_, bvo0_.b_uic as b_uic1_, bvo0_.a_uic as a_uic1_ from B bvo0_ left outer join A avo1_ on bvo0_.a_uic=avo1_.a_uic where bvo0_.b_uic=?
Hibernate: select avo1_.a_uic as a_uic0_, bvo0_.b_uic as b_uic1_, bvo0_.a_uic as a_uic1_ from B bvo0_ left outer join A avo1_ on bvo0_.a_uic=avo1_.a_uic where bvo0_.b_uic=?
14:03:13,887 DEBUG SessionFactoryImpl:536 - preparing statement
14:03:13,887 DEBUG StringType:44 - binding '2C90AA1E-00F9-00F9-0002-FFFFF9415565' to parameter: 1
14:03:13,903 DEBUG Loader:148 - processing result set
14:03:13,903 DEBUG Loader:182 - done processing result set (0 rows)
14:03:13,903 DEBUG BatcherImpl:173 - done closing: 0 open PreparedStatements, 0 open ResultSets
14:03:13,903 DEBUG SessionFactoryImpl:554 - closing statement
14:03:13,903 DEBUG Loader:195 - total objects hydrated: 0
14:03:13,918 DEBUG SessionFactoryUtils:201 - Closing Hibernate session
14:03:13,918 DEBUG SessionImpl:435 - closing session
14:03:13,918 DEBUG SessionImpl:2930 - disconnecting session
14:03:13,918 DEBUG SessionImpl:447 - transaction completion
net.sf.hibernate.ObjectNotFoundException: No row with the given identifier exists: 2C90AA1E-00F9-00F9-0002-FFFFF9415565, of class: BVO
   at net.sf.hibernate.impl.SessionImpl.throwObjectNotFound(SessionImpl.java:1678)
   at net.sf.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:1717)
   at net.sf.hibernate.type.ManyToOneType.resolveIdentifier(ManyToOneType.java:62)
   at net.sf.hibernate.type.EntityType.assemble(EntityType.java:88)
   at net.sf.hibernate.collection.Set.<init>(Set.java:94)
   at net.sf.hibernate.type.SetType.assembleCachedCollection(SetType.java:36)
   at net.sf.hibernate.collection.CollectionPersister.getCachedCollection(CollectionPersister.java:299)
   at net.sf.hibernate.type.PersistentCollectionType.getCollection(PersistentCollectionType.java:66)
   at net.sf.hibernate.type.PersistentCollectionType.resolveIdentifier(PersistentCollectionType.java:177)
   at net.sf.hibernate.type.PersistentCollectionType.assemble(PersistentCollectionType.java:129)
   at net.sf.hibernate.impl.CacheEntry.assemble(CacheEntry.java:53)
   at net.sf.hibernate.impl.CacheEntry.assemble(CacheEntry.java:45)
   at net.sf.hibernate.impl.SessionImpl.doLoad(SessionImpl.java:1872)
   at net.sf.hibernate.impl.SessionImpl.doLoadByClass(SessionImpl.java:1757)
   at net.sf.hibernate.impl.SessionImpl.load(SessionImpl.java:1688)
   at org.springframework.orm.hibernate.HibernateTemplate$1.doInHibernate(HibernateTemplate.java:203)
   at org.springframework.orm.hibernate.HibernateTemplate.execute(HibernateTemplate.java:144)
   at org.springframework.orm.hibernate.HibernateTemplate.load(HibernateTemplate.java:201)
   at ADaoImpl.loadByUID(ADaoImpl.java:40)
   at AControllerImpl.loadAByUid(AControllerImpl.java:33)
   at AServiceImpl.getA(AServiceImpl.java:110)
   at ADelegateImpl.loadA(ADelegateImpl.java:51)
   at TestClient.loadAByUid(TestClient.java:196)
   at TestClient.main(TestClient.java:74)
Exception in thread "main"


Kind regards, Andreas


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 04, 2003 11:00 am 
Hibernate Team
Hibernate Team

Joined: Tue Aug 26, 2003 12:50 pm
Posts: 5130
Location: Melbourne, Australia
Quote:
Flushed: 0 insertions, 0 updates, 1 deletions to 1 objects



Ummm. The parent object is not associated with the session.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 04, 2003 11:32 am 
Regular
Regular

Joined: Wed Aug 27, 2003 2:55 am
Posts: 90
Location: Sweden
So a:

Code:
session.update(parentObjectA);


, before making the:

Code:
session.delete(myCHildObjectB);


, would make it work?

When I leave my object graph "hanging" in the UI between sessions, should I always call update() or load() to re-associate it?

Kind regards, Andreas


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 04, 2003 11:50 am 
Hibernate Team
Hibernate Team

Joined: Tue Aug 26, 2003 12:50 pm
Posts: 5130
Location: Melbourne, Australia
In 2.1 it would be better to use session.lock(parent, LockMode.NONE)


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 04, 2003 11:55 am 
Regular
Regular

Joined: Wed Aug 27, 2003 2:55 am
Posts: 90
Location: Sweden
Well, currently I'm using Hibernate 2.0.3 together with Spring framework.

How can I do in Hibernate 2.0.3. It's possible to get the current session through the HibernateTemplate in Spring.

I'm trying to avoid the passing of the whole object graph from UI to Business tier 'cause my true object graph is BIG!!!

I'd like to send only that object in graph that needs to be deleted, nothing more. But, maybe that isn't possible?

Kind regards, Andreas


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 04, 2003 11:59 am 
Hibernate Team
Hibernate Team

Joined: Tue Aug 26, 2003 12:50 pm
Posts: 5130
Location: Melbourne, Australia
in 2.0.3 you need to use update()


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 04, 2003 12:08 pm 
Regular
Regular

Joined: Wed Aug 27, 2003 2:55 am
Posts: 90
Location: Sweden
Thanks a lot Gavin! You've been of tremendous help :-)

Haven't tried to re-associate the parent object with the session yet, but I surely believe you're right.

Got to go home now, todays work is over here in Sweden! ;-)

Kind regards, Andreas


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 15 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.