-->
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: Batch update returned unexpected row count from update
PostPosted: Fri Sep 09, 2011 10:33 am 
Newbie

Joined: Fri Sep 09, 2011 10:06 am
Posts: 1
Hi there,
I'm new to Hibernate and I'm trying to create an application to write on the DB a classic relationship one to many betweeen a Cliente and one or more Ordine. When I try to add a new cliente I get the following exception:
ERROR AbstractBatcher:73 - Exception executing batch:
org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1

at org.hibernate.jdbc.Expectations$BasicExpectation.checkBatched(Expectations.java:85)
at org.hibernate.jdbc.Expectations$BasicExpectation.verifyOutcome(Expectations.java:70)
at org.hibernate.jdbc.BatchingBatcher.checkRowCounts(BatchingBatcher.java:90)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:268)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:188)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:383)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:133)
at parkId.userProfiling.Prova.main(Prova.java:31)

This is Cliente.java
Code:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "crmid",
    "createDatetime",
    "lastStatusChange",
    "deleted",
    "isParent",
    "parentId",
    "codiceCliente",
    "tagid",
    "nome",
    "cognome",
    "indirizzo",
    "numeroCivico",
    "citta",
    "cap",
    "prov",
    "ordini"
})
@XmlRootElement(name = "Row")
public class Cliente {

    @XmlElement(required = true)
    protected int crmid;
   
    @XmlElement(required = true)
    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
    @XmlSchemaType(name = "NMTOKEN")
    protected String createDatetime;
   
    protected Date createDatetimeDB;
   
    @XmlElement(required = true)
    protected String lastStatusChange;
   
    protected Date lastStatusChangeDB;
   
    @XmlElement(required = true)
    protected int deleted;
   
    @XmlElement(required = true)
    protected int isParent;
   
    @XmlElement(required = true)
    protected int parentId;
   
    @XmlElement(name = "CodiceCliente", required = true)
    protected int codiceCliente;
   
    @XmlElement(name = "TAGID", required = true)
    protected String tagid;
   
    @XmlElement(name = "Nome", required = true)
    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
    @XmlSchemaType(name = "NCName")
    protected String nome;
   
    @XmlElement(name = "Cognome", required = true)
    protected String cognome;
   
    @XmlElement(name = "Indirizzo", required = true)
    protected String indirizzo;
   
    @XmlElement(name = "NumeroCivico", required = true)
    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
    @XmlSchemaType(name = "NMTOKEN")
    protected String numeroCivico;
   
    @XmlElement(name = "Citta", required = true)
    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
    @XmlSchemaType(name = "NMTOKEN")
    protected String citta;
   
    @XmlElement(name = "CAP", required = true)
    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
    @XmlSchemaType(name = "NMTOKEN")
    protected String cap;
   
    @XmlElement(name = "Prov", required = true)
    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
    @XmlSchemaType(name = "NCName")
    protected String prov;
   
    @XmlElement(name = "Ordini", required = true)
    protected Ordini ordini;
   
    private Set<Ordine> setOrdini = new HashSet<Ordine>();
   
    public Cliente(){
       
    }

    public int getCrmid() {
        return crmid;
    }

    public void setCrmid(int value) {
        this.crmid = value;
    }

    public String getCreateDatetime() {
        return createDatetime;
    }

    public Date getCreateDatetimeDB() {
        return createDatetimeDB;
    }

    public void setCreateDatetime(String value) {
        this.createDatetime = value;
    }
   
    public void setCreateDatetimeDB(Date value) {
        this.createDatetimeDB = value;
    }

    public String getLastStatusChange() {
        return lastStatusChange;
    }
   
    public Date getLastStatusChangeDB() {
        return lastStatusChangeDB;
    }

    public void setLastStatusChange(String value) {
        this.lastStatusChange = value;
    }

    public void setLastStatusChangeDB(Date value) {
        this.lastStatusChangeDB = value;
    }

    public int getDeleted() {
        return deleted;
    }

    public void setDeleted(int value) {
        this.deleted = value;
    }

    public int getIsParent() {
        return isParent;
    }

    public void setIsParent(int value) {
        this.isParent = value;
    }

    public int getParentId() {
        return parentId;
    }

    public void setParentId(int value) {
        this.parentId = value;
    }

    public int getCodiceCliente() {
        return codiceCliente;
    }

    public void setCodiceCliente(int value) {
        this.codiceCliente = value;
    }

    public String gettagid() {
        return tagid;
    }

    public void settagid(String value) {
        this.tagid = value;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String value) {
        this.nome = value;
    }

    public String getCognome() {
        return cognome;
    }

    public void setCognome(String value) {
        this.cognome = value;
    }

    public String getIndirizzo() {
        return indirizzo;
    }

    public void setIndirizzo(String value) {
        this.indirizzo = value;
    }

    public String getNumeroCivico() {
        return numeroCivico;
    }

    public void setNumeroCivico(String value) {
        this.numeroCivico = value;
    }

    public String getCitta() {
        return citta;
    }

    public void setCitta(String value) {
        this.citta = value;
    }

    public String getcap() {
        return cap;
    }

    public void setcap(String value) {
        this.cap = value;
    }

    public String getProv() {
        return prov;
    }

    public void setProv(String value) {
        this.prov = value;
    }

    public Ordini getOrdini() {
        return ordini;
    }

    public void setOrdini(Ordini value) {
        this.ordini = value;
    }
   
    public Set getSetOrdini() {
       return setOrdini;
    }
   
    public void setSetOrdini(Set value) {
       this.setOrdini=value;
   }
}


This is his Ordine.java
Code:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "idOrdine",
    "bundle"
})
@XmlRootElement(name = "Ordine")
public class Ordine {

    @XmlElement(name = "IdOrdine", required = true)
    protected int idOrdine;
    @XmlElement(name = "Bundle", required = true)
    protected int bundle;

   public Ordine(){
       
    }

    public int getIdOrdine() {
        return idOrdine;
    }

    public void setIdOrdine(int value) {
        this.idOrdine = value;
    }

    public int getBundle() {
        return bundle;
    }

    public void setBundle(int value) {
        this.bundle = value;
    }

}


And this is the corresponding hbm.xml
Code:
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC       
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"       
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="parkId.elements.anagCli">
  <class name="Cliente" table="anagrafica_clienti">
    <id name="codiceCliente" column="codiceCliente">
    </id>
    <property name="crmid"/>
    <property name="createDatetimeDB" type="timestamp" />
    <property name="lastStatusChangeDB" type="timestamp" />
    <property name="deleted"/>
    <property name="isParent"/>
    <property name="parentId"/>
    <property name="tagid"/>
    <property name="nome"/>
    <property name="cognome"/>
    <property name="indirizzo"/>
    <property name="numeroCivico"/>
    <property name="citta"/>
    <property name="cap"/>
    <property name="prov"/>
   <set name="setOrdini" table="ordini">
      <key column="codiceCliente"/>
      <one-to-many class="Ordine"/>
   </set>
  </class>
 
  <class name="Ordine" table="ordini">
    <id name="idOrdine" column="id_ordine">
    </id>
    <property name="bundle"/>
  </class>
</hibernate-mapping>


And this is the main test:
Code:
public class Prova {
    public static void main(String a[]) throws ParseException {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        Cliente cliente = new Cliente();
        cliente.setCodiceCliente(2);
        cliente.setNome("222aaa");
        cliente.setCognome("222bbb");
        cliente.setCreateDatetimeDB(ParkIdUtils.stringToDate("2011-07-07 15:28:47"));
        Ordine ordine = new Ordine();
        ordine.setIdOrdine(1);
        ordine.setBundle(11);
        cliente.setSetOrdini(new HashSet());
        cliente.getSetOrdini().add(ordine);
       
        session.save(cliente);
        session.getTransaction().commit();
       
        session.close();
        HibernateUtil.getSessionFactory().close();
    }
}


It seems to me that I've done all the things explained in the different tutorials and I can't get a solution..
Can anyone help me?

Thanks in advance


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.