Hi
We are getting following error when using composite key.
Can please any one help on this?
[6/1/04 13:19:21:282 EDT] 2af5d88d SystemErr R net.sf.hibernate.HibernateException: identifier of an instance of com.bunge.domain.position.PositionTradeAudit altered from com.bunge.domain.position.PositionTradeAuditPk@6941c36a to com.bunge.domain.position.PositionTradeAuditPk@6941c36a
at net.sf.hibernate.impl.SessionImpl.checkId(SessionImpl.java:2606)
at net.sf.hibernate.impl.SessionImpl.flushEntity(SessionImpl.java:2429)
at net.sf.hibernate.impl.SessionImpl.flushEntities(SessionImpl.java:2422)
at net.sf.hibernate.impl.SessionImpl.flushEverything(SessionImpl.java:2224)
at net.sf.hibernate.impl.SessionImpl.flush(SessionImpl.java:2203)
at com.bunge.service.positions.dao.hibernate.HibernatePositionsDAO.createTradeAudit(HibernatePositionsDAO.java:63)
at com.bunge.service.positions.ejb.PositionsServiceBean.getCalcAndStore(PositionsServiceBean.java:195)
at com.bunge.service.positions.ejb.PositionsServiceBean.updatePosition(PositionsServiceBean.java:108)
at com.bunge.service.positions.ejb.PositionsServiceBean.updatePosition(PositionsServiceBean.java:44)
at com.bunge.service.positions.ejb.EJSRemoteStatelessPositionsService_c779d41d.updatePosition(EJSRemoteStatelessPositionsService_c779d41d.java:53)
at com.bunge.service.positions.ejb._EJSRemoteStatelessPositionsService_c779d41d_Tie.updatePosition__com_bunge_domain_trade_Contract(_EJSRemoteStatelessPositionsService_c779d41d_Tie.java:138)
at com.bunge.service.positions.ejb._EJSRemoteStatelessPositionsService_c779d41d_Tie._invoke(_EJSRemoteStatelessPositionsService_c779d41d_Tie.java:111)
at com.ibm.CORBA.iiop.ServerDelegate.dispatchInvokeHandler(ServerDelegate.java:602)
at com.ibm.CORBA.iiop.ServerDelegate.dispatch(ServerDelegate.java:455)
at com.ibm.rmi.iiop.ORB.process(ORB.java:402)
at com.ibm.CORBA.iiop.ORB.process(ORB.java:1685)
at com.ibm.rmi.iiop.Connection.doWork(Connection.java:2173)
at com.ibm.rmi.iiop.WorkUnitImpl.doWork(WorkUnitImpl.java:64)
at com.ibm.ejs.oa.pool.PooledThread.run(ThreadPool.java:95)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:593)
Exiting from updatePosition(Contract contract) with Position object:
Classes are here as follows:
******************************************************
package com.bunge.domain.position;
import java.io.Serializable;
import java.util.Date;
import com.bunge.domain.trade.id.ContractId;
/**
* $Id: PositionTradeAudit.java,v 1.5 2004/05/28 20:44:31 narsimha Exp $
* Last modified by $Author: narsimha $
* Copyright (C) 2003 Bunge Global Markets. All rights reserved
*/
public class PositionTradeAudit implements Serializable {
private PositionTradeAuditPk positionTradeAuditPk;
private Double quanitiy;
private Double totalAmount;
private Double basisAmount;
private String updateBy;
private Date updatedOn;
private int action;
public PositionTradeAudit(){
}
/**
* @return
*/
public int getAction() {
return action;
}
/**
* @param i
*/
public void setAction(int i) {
action = i;
}
/**
* @return
*/
public Double getBasisAmount() {
return basisAmount;
}
/**
* @return
*/
public Double getQuanitiy() {
return quanitiy;
}
/**
* @return
*/
public Double getTotalAmount() {
return totalAmount;
}
/**
* @return
*/
public String getUpdateBy() {
return updateBy;
}
/**
* @return
*/
public Date getUpdatedOn() {
return updatedOn;
}
/**
* @param double1
*/
public void setBasisAmount(Double double1) {
basisAmount = double1;
}
/**
* @param double1
*/
public void setQuanitiy(Double double1) {
quanitiy = double1;
}
/**
* @param double1
*/
public void setTotalAmount(Double double1) {
totalAmount = double1;
}
/**
* @param string
*/
public void setUpdateBy(String string) {
updateBy = string;
}
/**
* @param date
*/
public void setUpdatedOn(Date date) {
updatedOn = date;
}
/**
* @return
*/
public PositionTradeAuditPk getPositionTradeAuditPk() {
return positionTradeAuditPk;
}
/**
* @param pk
*/
public void setPositionTradeAuditPk(PositionTradeAuditPk pk) {
positionTradeAuditPk = pk;
}
}
/*
* Created on Jun 1, 2004
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package com.bunge.domain.position;
import java.io.Serializable;
import java.util.Date;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
/**
* @author cnmedik
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class PositionTradeAuditPk implements Serializable{
private Long positionId;
private Long tradeId;
private Date actionDate;
public boolean equals(Object o){
if (o instanceof PositionTradeAuditPk){
PositionTradeAuditPk uc = (PositionTradeAuditPk) o;
new EqualsBuilder()
.append(this.getActionDate(), uc.getActionDate())
.append(this.getPositionId(), uc.getPositionId())
.append(this.getTradeId(), uc.getTradeId())
.isEquals();
}
return false;
}
public int hashCode() {
return new HashCodeBuilder()
.append(this.getActionDate())
.append(this.getPositionId())
.append(this.getTradeId())
.toHashCode();
}
/**
* @return
*/
public Date getActionDate() {
return actionDate;
}
/**
* @return
*/
public Long getPositionId() {
return positionId;
}
/**
* @return
*/
public Long getTradeId() {
return tradeId;
}
/**
* @param date
*/
public void setActionDate(Date date) {
actionDate = date;
}
/**
* @param long1
*/
public void setPositionId(Long long1) {
positionId = long1;
}
/**
* @param long1
*/
public void setTradeId(Long long1) {
tradeId = long1;
}
}
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping schema="BGM_POSITION_OBJECT">
<class name="com.bunge.domain.position.PositionTradeAudit" table="TRADE_UPDATE_TRACE">
<composite-id name="positionTradeAuditPk" class="com.bunge.domain.position.PositionTradeAuditPk">
<key-property name="positionId"/>
<key-property name="tradeId"/>
<key-property name="actionDate" column="ACTION_DATE" type="date"/>
</composite-id>
<property name="action" column="ACTION_ID" type="integer"/>
<property name="quanitiy" column="QUANTITY" type="double"/>
<property name="basisAmount" column="BASIS_AMOUNT" type="double"/>
<property name="totalAmount" column="TOTAL_AMOUNT" type="double"/>
<property name="updatedOn" column="UPDATED_ON" type="date"/>
<property name="updateBy" column="UPDATED_BY" type="string"/>
</class>
</hibernate-mapping>
|