-->
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.  [ 1 post ] 
Author Message
 Post subject: identifier of an instance of [class] was altered from X
PostPosted: Fri Mar 07, 2008 5:54 pm 
Newbie

Joined: Fri Mar 07, 2008 4:20 pm
Posts: 1
I searched around on the forums but was unable to find a solution to this problem.

I am trying to update a foreign key in one of my tables.

Basically a form has a select with a list of "BugSeverity" entries with the ID as the value
The Bug table has a foreign key constraint to the BugSeverity table
I am not trying to modify the BugSeverity table just the Bug table.

Here is all the code that is used for this.

The error:
Code:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.orm.hibernate3.HibernateSystemException: identifier of an instance of com.odinnet.data.Bugseverity was altered from 3 to 4; nested exception is org.hibernate.HibernateException: identifier of an instance of com.odinnet.data.Bugseverity was altered from 3 to 4
   org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:488)
   org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:441)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
   org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
   org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
   org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

root cause

org.springframework.orm.hibernate3.HibernateSystemException: identifier of an instance of com.odinnet.data.Bugseverity was altered from 3 to 4; nested exception is org.hibernate.HibernateException: identifier of an instance of com.odinnet.data.Bugseverity was altered from 3 to 4
   org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:659)
   org.springframework.orm.hibernate3.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:690)
   org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:566)
   org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:662)
   org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:632)
   org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:319)
   org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:116)
   org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
   org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
   $Proxy13.saveBug(Unknown Source)
   com.odinnet.service.SoftwareService.saveBug(SoftwareService.java:102)
   com.odinnet.mvc.EditBugController.onSubmit(EditBugController.java:33)
   org.springframework.web.servlet.mvc.SimpleFormController.onSubmit(SimpleFormController.java:381)
   org.springframework.web.servlet.mvc.SimpleFormController.processFormSubmission(SimpleFormController.java:267)
   org.springframework.web.servlet.mvc.AbstractFormController.handleRequestInternal(AbstractFormController.java:265)
   org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
   org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
   org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:874)
   org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:808)
   org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
   org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:441)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
   org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
   org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
   org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

root cause

org.hibernate.HibernateException: identifier of an instance of com.odinnet.data.Bugseverity was altered from 3 to 4
   org.hibernate.event.def.DefaultFlushEntityEventListener.checkId(DefaultFlushEntityEventListener.java:58)
   org.hibernate.event.def.DefaultFlushEntityEventListener.getValues(DefaultFlushEntityEventListener.java:164)
   org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:120)
   org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:196)
   org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76)
   org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
   org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
   org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
   org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
   org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:558)
   org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:662)
   org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:632)
   org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:319)
   org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:116)
   org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
   org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
   $Proxy13.saveBug(Unknown Source)
   com.odinnet.service.SoftwareService.saveBug(SoftwareService.java:102)
   com.odinnet.mvc.EditBugController.onSubmit(EditBugController.java:33)
   org.springframework.web.servlet.mvc.SimpleFormController.onSubmit(SimpleFormController.java:381)
   org.springframework.web.servlet.mvc.SimpleFormController.processFormSubmission(SimpleFormController.java:267)
   org.springframework.web.servlet.mvc.AbstractFormController.handleRequestInternal(AbstractFormController.java:265)
   org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
   org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
   org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:874)
   org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:808)
   org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
   org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:441)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
   org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
   org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
   org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)


Mapping files:

Bug
Code:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.odinnet.data.Bug" table="bug" catalog="odinnet2">
        <id name="bugId" type="java.lang.Integer">
            <column name="BugID" />
            <generator class="identity" />
        </id>
        <many-to-one name="bugpriority" class="com.odinnet.data.Bugpriority" fetch="select">
            <column name="PriorityID" not-null="true" />
        </many-to-one>
        <many-to-one name="userByAssignedTo" class="com.odinnet.data.User" fetch="select">
            <column name="AssignedTo" />
        </many-to-one>
        <many-to-one name="bugstatus" class="com.odinnet.data.Bugstatus" fetch="select">
            <column name="StatusID" not-null="true" />
        </many-to-one>
        <many-to-one name="software" class="com.odinnet.data.Software" fetch="select">
            <column name="SoftwareID" not-null="true" />
        </many-to-one>
        <many-to-one name="bugseverity" class="com.odinnet.data.Bugseverity" fetch="select">
            <column name="SeverityID" not-null="true" />
        </many-to-one>
        <many-to-one name="userByReporterId" class="com.odinnet.data.User" fetch="select">
            <column name="ReporterID" not-null="true" />
        </many-to-one>
        <property name="summary" type="java.lang.String">
            <column name="Summary" not-null="true" />
        </property>
        <property name="description" type="java.lang.String">
            <column name="Description" length="65535" not-null="true" />
        </property>
        <property name="dateAdded" type="java.lang.Long">
            <column name="DateAdded" not-null="true" />
        </property>
        <property name="dateFixed" type="java.lang.Long">
            <column name="DateFixed" />
        </property>
        <set name="bugnotes" inverse="true" order-by="dateAdded">
            <key>
                <column name="BugID" not-null="true" />
            </key>
            <one-to-many class="com.odinnet.data.Bugnote" />
        </set>
        <set name="bughistories" inverse="true" order-by="dateOccurred">
            <key>
                <column name="BugID" not-null="true" />
            </key>
            <one-to-many class="com.odinnet.data.Bughistory"/>
        </set>
    </class>
</hibernate-mapping>


BugSeverity
Code:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.odinnet.data.Bugseverity" table="bugseverity" catalog="odinnet2">
        <id name="severityId" type="java.lang.Integer">
            <column name="SeverityID" />
            <generator class="identity" />
        </id>
       
        <property name="severityName" type="java.lang.String">
            <column name="SeverityName" length="20" not-null="true" />
        </property>
        <property name="severityValue" type="java.lang.Integer">
            <column name="SeverityValue" not-null="true" />
        </property>
        <property name="defaultSeverity" type="java.lang.Byte">
            <column name="DefaultSeverity" not-null="true" />
        </property>
        <set name="bugs" inverse="true">
            <key>
                <column name="SeverityID" not-null="true" />
            </key>
            <one-to-many class="com.odinnet.data.Bug" />
        </set>
    </class>
</hibernate-mapping>



The POJOs:

Code:
package com.odinnet.data;

import java.util.HashSet;
import java.util.Set;

public class Bugseverity implements java.io.Serializable {

   // Fields

        private Byte defaultSeverity;
   private Integer severityId;
   private String severityName;
   private Integer severityValue;
   private Set bugs = new HashSet(0);

   // Constructors

   /** default constructor */
   public Bugseverity() {
   }

   /** minimal constructor */
   public Bugseverity(Integer severityId, String severityName,
         Integer severityValue) {
      this.severityId = severityId;
      this.severityName = severityName;
      this.severityValue = severityValue;
   }

   /** full constructor */
   public Bugseverity(Integer severityId, String severityName,
         Integer severityValue, Set bugs) {
      this.severityId = severityId;
      this.severityName = severityName;
      this.severityValue = severityValue;
      this.bugs = bugs;
   }

   // Property accessors

   public Integer getSeverityId() {
      return this.severityId;
   }

   public void setSeverityId(Integer severityId) {
      this.severityId = severityId;
   }

   public String getSeverityName() {
      return this.severityName;
   }

   public void setSeverityName(String severityName) {
      this.severityName = severityName;
   }

   public Integer getSeverityValue() {
      return this.severityValue;
   }

   public void setSeverityValue(Integer severityValue) {
      this.severityValue = severityValue;
   }

   public Set getBugs() {
      return this.bugs;
   }

   public void setBugs(Set bugs) {
      this.bugs = bugs;
   }
       
        public Byte getDefaultSeverity() {
      return this.defaultSeverity;
   }

   public void setDefaultSeverity(Byte defaultSeverity) {
      this.defaultSeverity = defaultSeverity;
   }

}


Code:
package com.odinnet.data;

import java.util.HashSet;
import java.util.Set;
public class Bug implements java.io.Serializable {

   // Fields

   private Integer bugId;
   private Bugpriority bugpriority;
   private User userByAssignedTo;
   private Bugstatus bugstatus;
   private Software software;
   private Bugseverity bugseverity;
   private User userByReporterId;
   private String summary;
   private String description;
   private Long dateAdded;
   private Long dateFixed;
   private Set bugnotes = new HashSet(0);
   private Set bughistories = new HashSet(0);

   // Constructors

   /** default constructor */
   public Bug() {
   }

   /** minimal constructor */
   public Bug(Integer bugId, Bugpriority bugpriority, Bugstatus bugstatus,
         Software software, Bugseverity bugseverity, User userByReporterId,
         String summary, String description, Long dateAdded) {
      this.bugId = bugId;
      this.bugpriority = bugpriority;
      this.bugstatus = bugstatus;
      this.software = software;
      this.bugseverity = bugseverity;
      this.userByReporterId = userByReporterId;
      this.summary = summary;
      this.description = description;
      this.dateAdded = dateAdded;
   }

   /** full constructor */
   public Bug(Integer bugId, Bugpriority bugpriority, User userByAssignedTo,
         Bugstatus bugstatus, Software software, Bugseverity bugseverity,
         User userByReporterId, String summary, String description,
         Long dateAdded, Long dateFixed, Set bugnotes, Set bughistories) {
      this.bugId = bugId;
      this.bugpriority = bugpriority;
      this.userByAssignedTo = userByAssignedTo;
      this.bugstatus = bugstatus;
      this.software = software;
      this.bugseverity = bugseverity;
      this.userByReporterId = userByReporterId;
      this.summary = summary;
      this.description = description;
      this.dateAdded = dateAdded;
      this.dateFixed = dateFixed;
      this.bugnotes = bugnotes;
      this.bughistories = bughistories;
   }

   // Property accessors

   public Integer getBugId() {
      return this.bugId;
   }

   public void setBugId(Integer bugId) {
      this.bugId = bugId;
   }

   public Bugpriority getBugpriority() {
      return this.bugpriority;
   }

   public void setBugpriority(Bugpriority bugpriority) {
      this.bugpriority = bugpriority;
   }

   public User getUserByAssignedTo() {
      return this.userByAssignedTo;
   }

   public void setUserByAssignedTo(User userByAssignedTo) {
      this.userByAssignedTo = userByAssignedTo;
   }

   public Bugstatus getBugstatus() {
      return this.bugstatus;
   }

   public void setBugstatus(Bugstatus bugstatus) {
      this.bugstatus = bugstatus;
   }

   public Software getSoftware() {
      return this.software;
   }

   public void setSoftware(Software software) {
      this.software = software;
   }

   public Bugseverity getBugseverity() {
      return this.bugseverity;
   }

   public void setBugseverity(Bugseverity bugseverity) {
      this.bugseverity = bugseverity;
   }

   public User getUserByReporterId() {
      return this.userByReporterId;
   }

   public void setUserByReporterId(User userByReporterId) {
      this.userByReporterId = userByReporterId;
   }

   public String getSummary() {
      return this.summary;
   }

   public void setSummary(String summary) {
      this.summary = summary;
   }

   public String getDescription() {
      return this.description;
   }

   public void setDescription(String description) {
      this.description = description;
   }

   public Long getDateAdded() {
      return this.dateAdded;
   }

   public void setDateAdded(Long dateAdded) {
      this.dateAdded = dateAdded;
   }

   public Long getDateFixed() {
      return this.dateFixed;
   }

   public void setDateFixed(Long dateFixed) {
      this.dateFixed = dateFixed;
   }

   public Set getBugnotes() {
      return this.bugnotes;
   }

   public void setBugnotes(Set bugnotes) {
      this.bugnotes = bugnotes;
   }

   public Set getBughistories() {
      return this.bughistories;
   }

   public void setBughistories(Set bughistories) {
      this.bughistories = bughistories;
   }

}


The DAO code:

Code:
    @Transactional(propagation=Propagation.REQUIRED)
    public void saveBug(Bug bug) {
        sessionFactory.getCurrentSession().saveOrUpdate(bug);
    }


The business logic code:

Code:
    public void saveBug(Bug bug){
        long time = Calendar.getInstance().getTimeInMillis();
        bug.setBugseverity(softwareDAO.getBugSeverity(bug.getBugseverity().getSeverityId()));
        Bughistory history = new Bughistory();
        history.setDateOccurred(time);
        history.setHistoryItem("Bug Updated");
        history.setBug(bug);
        Set histories = new HashSet();
        histories.add(history);
        bug.setBughistories(histories);
        softwareDAO.saveBug(bug);
    }


The form submission code:

Code:
package com.odinnet.mvc;
import javax.servlet.http.HttpServletRequest;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
import com.odinnet.service.SoftwareService;
import com.odinnet.data.Bug;
import java.util.HashMap;
import java.util.Map;
public class EditBugController extends SimpleFormController{
    public EditBugController() {
        setCommandClass(Bug.class);
        setCommandName("bug");
    }
    @Override
    protected Object formBackingObject(HttpServletRequest request) throws Exception{
        Bug bugForm = (Bug)super.formBackingObject(request);
        bugForm = softwareService.getBug(Integer.parseInt(request.getParameter("id")));
        return bugForm;
    }
    @Override
    protected Map referenceData(HttpServletRequest request) throws Exception {
        Map data = new HashMap();
        data.put("software",softwareService.listSoftware());
        data.put("severities",softwareService.listBugSeverities());
        data.put("priorities",softwareService.listBugPriorities());
        data.put("statuses",softwareService.listBugStatuses());
        return data;
    }
    @Override
    protected ModelAndView onSubmit(Object command, BindException bindException) throws Exception {
        Bug bug = (Bug)command;
        softwareService.saveBug(bug);
        return new ModelAndView(getSuccessView());
    }
    private SoftwareService softwareService;
    public void setSoftwareService(SoftwareService softwareService){
        this.softwareService = softwareService;
    }
}


I am unsure of what I am doing wrong, but this (to me) is all experimental code so i can change anything include the database as I please.

Any help would be appreciated.


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

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.