Hi,
I am having serious problem with updating my Hibernate objects on my AppFuse
project.
My mapping not sure but works for adding and I have lots of mapping between
my tables.
Here I have Customer, Dbuser, CustContact, CustInsurance, Address, Phone ...
etc.

I have searched and I have tried suggestions like (if I did properly)
.merge(),
.evict(),
cascade=none and my mapping lazy=false
I cannot solve the NonUniqueObjectException, Please help !!!

Exception:
-------------------------------------------------------------------------------
org.springframework.orm.hibernate3.HibernateSystemException: a different
object with the same identifier value was already associated with the
session: [com.vahms.model.dbobjects.Customer#3]; nested exception is
org.hibernate.NonUniqueObjectException: a different object with the same
identifier value was already associated with the session:
[com.vahms.model.dbobjects.Customer#3]
Caused by:
org.hibernate.NonUniqueObjectException: a different object with the same
identifier value was already associated with the session:
[com.vahms.model.dbobjects.Customer#3]
        at
org.hibernate.engine.StatefulPersistenceContext.checkUniqueness(StatefulPersistenceContext.java:556)
        at
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performUpdate(DefaultSaveOrUpdateEventListener.java:259)
-------------------------------------------------------------------------------

Mapping s pn customer
---------------------
/**
     * @hibernate.many-to-one column="dbuser_id" cascade="none"
outerjoin="true" not-null="true" lazy="false"
     */
    
    
    /**
     * @hibernate.set inverse="true" lazy="false" cascade="none"
     * @hibernate.collection-key  column="customer_id"
     * @hibernate.collection-one-to-many
class="com.vahms.model.dbobjects.CustContact"
     */
    
    /**
     * @hibernate.set inverse="true" lazy="false" cascade="all"
     * @hibernate.collection-key column="customer_id"
     * @hibernate.collection-one-to-many
class="com.vahms.model.dbobjects.CustInsurance"
     */

          /**
     * @hibernate.set inverse="true" lazy="false" cascade="all"
     * @hibernate.collection-key column="customer_id"
     * @hibernate.collection-one-to-many
class="com.vahms.model.dbobjects.Customer_address"
     */
    
    /**
     * @hibernate.set inverse="true" lazy="false" cascade="all"
     * @hibernate.collection-key column="customer_id"
     * @hibernate.collection-one-to-many
class="com.vahms.model.dbobjects.Customer_phone"
     */
-------------------------------------------------------------------------------

I have tried these on CustomerDaoHibernate
-------------------------------------------------------------------------------
public void updateCustomer(final Customer customer) {
        if (log.isDebugEnabled()) {
            log.debug("customer's id: " + customer.getId());
        }
        /*
        log.debug("customer's id test1: " + customer.getId());
        getHibernateTemplate().setAlwaysUseNewSession(true); 
        log.debug("customer's id test2: " + customer.getId());
        getHibernateTemplate().merge(customer);
        */
        
        log.debug("customer's id test3: " + customer.getId());
        HibernateTemplate hibernateTemplate = getHibernateTemplate();
        Customer oldCustomer = (Customer)
hibernateTemplate.get(Customer.class, customer.getId());
        
        //getHibernateTemplate().update(customer);
        //getHibernateTemplate().merge(customer);
       
//getHibernateTemplate().saveOrUpdate(getHibernateTemplate().merge(customer));
        log.debug("customer's id test4: " + customer.getId());
        
        hibernateTemplate.evict(oldCustomer);
        //hibernateTemplate.clear();
        log.debug("customer's id test5: " +
customer.getDbuser().getFullName());
        //hibernateTemplate.saveOrUpdate(customer);
        hibernateTemplate.update(customer);
       
//hibernateTemplate.saveOrUpdate(getHibernateTemplate().merge(customer));
       
//getHibernateTemplate().saveOrUpdate(getHibernateTemplate().merge(customer));
        // necessary to throw a DataIntegrityViolation and catch it in
CustomerManager
        hibernateTemplate.flush();
        //getHibernateTemplate().flush();
    }
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-- 
View this message in context: 
http://www.nabble.com/NonUniqueObjectException-%28searched-a-lot-but-not-helping%29-tf3725087s2369.html#a10424746
Sent from the AppFuse - User mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to