Need help with Hibernate? Read this first:
http://www.hibernate.org/ForumMailingli ... AskForHelp
Hibernate version: 3.2.6 
Mapping documents: Quote.hbm.xml
<!DOCTYPE hibernate-mapping PUBLIC
      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="microdream.ModulePatient.Library">   
    <class name="Quote" table="tblquotes">
        <composite-id>
            <key-property name="name" column="strName" type="string"/>
            <key-many-to-one name="clinicalFolder" column="intClinicalFolder"/>
         </composite-id>
                
        <property name="description" column="strDescription" type="string" length="500" not-null="false"/>
        <property name="dateTime" column="dtaDateTime" type="calendar" update="false" insert="false"/>
     
        <bag name="performanceColls" table="tblperformancechaptersperformance" cascade="save-update" lazy="false" >             
           <key>
               <column name="strNameQuoteOrCare" />
               <column name="intClinicalFolder" />               
           </key>
           <one-to-many class="PerformanceColl"/>
        </bag>
        
   </class>
</hibernate-mapping>
Mapping documents: PerformanceColl.hbm.xml
<?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="microdream.ModulePatient.Library">   
    <class name="PerformanceColl" table="tblperformancecolls">
        <composite-id>
            <key-property name="number" column="intNumber"/>
            <key-many-to-one name="quoteOrCare">
                <column name="strNameQuoteOrCare" not-null="true"/>
                <column name="intClinicalFolder" not-null="true"/>
            </key-many-to-one>
        </composite-id>
        
        <property name="description" column="strDescription" type="string" length="500"/>
           
       <!--<bag name="performancesCopy" cascade="save-update" lazy="false" >             
           <key>
                <column name="intNumber"/>
                <column name="strNameQuoteOrCare"/>
                <column name="intClinicalFolder"/>
           </key>          
           <one-to-many class="PerformanceCopy"/>
        </bag>-->        
   </class>
</hibernate-mapping>
Code between sessionFactory.openSession() and session.close():
        Quote quote = this.currentPatient.getClinicalFolder().getQuotes().get(0);
       
        Session session = HibernateUtil.currentSession();
        session.beginTransaction();
        PerformanceColl perfColl = quote.getPerformanceColls().get(1);
        //Remove
         quote.getPerformanceColls().remove(perfColl);
                
        session.update(quote);
        session.getTransaction().commit();  
        session.close();
Full stack trace of any exception that occurs:
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
        at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:170)
        at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
        at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
        at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
        at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
        at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
        at microdream.modulepatient.TestHibernate.testRemovePerfCopyFromPerfColl(TestHibernate.java:72)
Caused by: java.sql.BatchUpdateException: Column 'strNameQuoteOrCare' cannot be null
        at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1669)
        at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1085)
        at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
        at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
Name and version of the database you are using:
MySql 5.0.51
The generated SQL (show_sql=true):
    select
        patient0_.intPersonId as intId24_,
        patient0_1_.strFirstName as strFirst2_24_,
        patient0_1_.strLastName as strLastN3_24_,
        patient0_1_.dtaBirthDate as dtaBirth4_24_,
        patient0_1_.intIdNationality as intIdNat5_24_,
        patient0_1_.strPhone as strPhone24_,
        patient0_1_.strFax as strFax24_,
        patient0_1_.strPhoneOffice as strPhone8_24_,
        patient0_1_.strCellular as strCellu9_24_,
        patient0_1_.strFirstLastNameSpouse as strFirs10_24_,
        patient0_1_.intIdCivilState as intIdCi11_24_,
        patient0_1_.intIdAddress as intIdAd12_24_,
        patient0_1_.isMan as isMan24_,
        patient0_1_.dtaCreationDate as dtaCrea14_24_,
        patient0_1_.dtaLastModify as dtaLast15_24_,
        patient0_.bloPersonalBild as bloPerso2_25_,
        patient0_.strTutorFirstName as strTutor3_25_,
        patient0_.strTutorLastName as strTutor4_25_,
        patient0_.strRelationshipDegree as strRelat5_25_,
        patient0_.strTutorAddress as strTutor6_25_,
        patient0_.strNotes as strNotes25_,
        patient0_.strProfession as strProfe8_25_,
        patient0_.strHealthInsuranceName as strHealt9_25_,
        patient0_.strHealthClientNumber as strHeal10_25_,
        patient0_.intIdClinicFolder as intIdCl11_25_ 
    from
        tblpatients patient0_ 
    inner join
        tblpeople patient0_1_ 
            on patient0_.intPersonId=patient0_1_.intId 
    where
        patient0_.intPersonId=37
Hibernate: 
    select
        clinicalfo0_.intId as intId3_1_,
        clinicalfo0_.intIdRootFolder as intIdRoo2_3_1_,
        patient1_.intPersonId as intId24_0_,
        patient1_1_.strFirstName as strFirst2_24_0_,
        patient1_1_.strLastName as strLastN3_24_0_,
        patient1_1_.dtaBirthDate as dtaBirth4_24_0_,
        patient1_1_.intIdNationality as intIdNat5_24_0_,
        patient1_1_.strPhone as strPhone24_0_,
        patient1_1_.strFax as strFax24_0_,
        patient1_1_.strPhoneOffice as strPhone8_24_0_,
        patient1_1_.strCellular as strCellu9_24_0_,
        patient1_1_.strFirstLastNameSpouse as strFirs10_24_0_,
        patient1_1_.intIdCivilState as intIdCi11_24_0_,
        patient1_1_.intIdAddress as intIdAd12_24_0_,
        patient1_1_.isMan as isMan24_0_,
        patient1_1_.dtaCreationDate as dtaCrea14_24_0_,
        patient1_1_.dtaLastModify as dtaLast15_24_0_,
        patient1_.bloPersonalBild as bloPerso2_25_0_,
        patient1_.strTutorFirstName as strTutor3_25_0_,
        patient1_.strTutorLastName as strTutor4_25_0_,
        patient1_.strRelationshipDegree as strRelat5_25_0_,
        patient1_.strTutorAddress as strTutor6_25_0_,
        patient1_.strNotes as strNotes25_0_,
        patient1_.strProfession as strProfe8_25_0_,
        patient1_.strHealthInsuranceName as strHealt9_25_0_,
        patient1_.strHealthClientNumber as strHeal10_25_0_,
        patient1_.intIdClinicFolder as intIdCl11_25_0_ 
    from
        tblclinicalfolders clinicalfo0_ 
    left outer join
        tblpatients patient1_ 
            on clinicalfo0_.intId=patient1_.intPersonId 
    left outer join
        tblpeople patient1_1_ 
            on patient1_.intPersonId=patient1_1_.intId 
    where
        clinicalfo0_.intId=?
Hibernate: 
    select
        quotes0_.intClinicalFolder as intClini2_1_,
        quotes0_.strName as strName1_,
        quotes0_.strName as strName26_0_,
        quotes0_.intClinicalFolder as intClini2_26_0_,
        quotes0_.strDescription as strDescr3_26_0_,
        quotes0_.dtaDateTime as dtaDateT4_26_0_ 
    from
        tblquotes quotes0_ 
    where
        quotes0_.intClinicalFolder=?
Hibernate: 
    select
        performanc0_.strNameQuoteOrCare as strNameQ2_1_,
        performanc0_.intClinicalFolder as intClini3_1_,
        performanc0_.intNumber as intNumber1_,
        performanc0_.intNumber as intNumber21_0_,
        performanc0_.strNameQuoteOrCare as strNameQ2_21_0_,
        performanc0_.intClinicalFolder as intClini3_21_0_,
        performanc0_.strDescription as strDescr4_21_0_ 
    from
        tblperformancecolls performanc0_ 
    where
        performanc0_.strNameQuoteOrCare=? 
        and performanc0_.intClinicalFolder=?
Hibernate: 
    update
        tblperformancecolls 
    set
        strNameQuoteOrCare=null,
        intClinicalFolder=null 
    where
        strNameQuoteOrCare=? 
        and intClinicalFolder=? 
        and intNumber=? 
        and strNameQuoteOrCare=? 
        and intClinicalFolder=?
Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 3.562 sec
------------- Standard Output ---------------
Hibernate: 
    select
        patient0_.intPersonId as intId24_,
        patient0_1_.strFirstName as strFirst2_24_,
        patient0_1_.strLastName as strLastN3_24_,
        patient0_1_.dtaBirthDate as dtaBirth4_24_,
        patient0_1_.intIdNationality as intIdNat5_24_,
        patient0_1_.strPhone as strPhone24_,
        patient0_1_.strFax as strFax24_,
        patient0_1_.strPhoneOffice as strPhone8_24_,
        patient0_1_.strCellular as strCellu9_24_,
        patient0_1_.strFirstLastNameSpouse as strFirs10_24_,
        patient0_1_.intIdCivilState as intIdCi11_24_,
        patient0_1_.intIdAddress as intIdAd12_24_,
        patient0_1_.isMan as isMan24_,
        patient0_1_.dtaCreationDate as dtaCrea14_24_,
        patient0_1_.dtaLastModify as dtaLast15_24_,
        patient0_.bloPersonalBild as bloPerso2_25_,
        patient0_.strTutorFirstName as strTutor3_25_,
        patient0_.strTutorLastName as strTutor4_25_,
        patient0_.strRelationshipDegree as strRelat5_25_,
        patient0_.strTutorAddress as strTutor6_25_,
        patient0_.strNotes as strNotes25_,
        patient0_.strProfession as strProfe8_25_,
        patient0_.strHealthInsuranceName as strHealt9_25_,
        patient0_.strHealthClientNumber as strHeal10_25_,
        patient0_.intIdClinicFolder as intIdCl11_25_ 
    from
        tblpatients patient0_ 
    inner join
        tblpeople patient0_1_ 
            on patient0_.intPersonId=patient0_1_.intId 
    where
        patient0_.intPersonId=37
Hibernate: 
    select
        clinicalfo0_.intId as intId3_1_,
        clinicalfo0_.intIdRootFolder as intIdRoo2_3_1_,
        patient1_.intPersonId as intId24_0_,
        patient1_1_.strFirstName as strFirst2_24_0_,
        patient1_1_.strLastName as strLastN3_24_0_,
        patient1_1_.dtaBirthDate as dtaBirth4_24_0_,
        patient1_1_.intIdNationality as intIdNat5_24_0_,
        patient1_1_.strPhone as strPhone24_0_,
        patient1_1_.strFax as strFax24_0_,
        patient1_1_.strPhoneOffice as strPhone8_24_0_,
        patient1_1_.strCellular as strCellu9_24_0_,
        patient1_1_.strFirstLastNameSpouse as strFirs10_24_0_,
        patient1_1_.intIdCivilState as intIdCi11_24_0_,
        patient1_1_.intIdAddress as intIdAd12_24_0_,
        patient1_1_.isMan as isMan24_0_,
        patient1_1_.dtaCreationDate as dtaCrea14_24_0_,
        patient1_1_.dtaLastModify as dtaLast15_24_0_,
        patient1_.bloPersonalBild as bloPerso2_25_0_,
        patient1_.strTutorFirstName as strTutor3_25_0_,
        patient1_.strTutorLastName as strTutor4_25_0_,
        patient1_.strRelationshipDegree as strRelat5_25_0_,
        patient1_.strTutorAddress as strTutor6_25_0_,
        patient1_.strNotes as strNotes25_0_,
        patient1_.strProfession as strProfe8_25_0_,
        patient1_.strHealthInsuranceName as strHealt9_25_0_,
        patient1_.strHealthClientNumber as strHeal10_25_0_,
        patient1_.intIdClinicFolder as intIdCl11_25_0_ 
    from
        tblclinicalfolders clinicalfo0_ 
    left outer join
        tblpatients patient1_ 
            on clinicalfo0_.intId=patient1_.intPersonId 
    left outer join
        tblpeople patient1_1_ 
            on patient1_.intPersonId=patient1_1_.intId 
    where
        clinicalfo0_.intId=?
Hibernate: 
    select
        quotes0_.intClinicalFolder as intClini2_1_,
        quotes0_.strName as strName1_,
        quotes0_.strName as strName26_0_,
        quotes0_.intClinicalFolder as intClini2_26_0_,
        quotes0_.strDescription as strDescr3_26_0_,
        quotes0_.dtaDateTime as dtaDateT4_26_0_ 
    from
        tblquotes quotes0_ 
    where
        quotes0_.intClinicalFolder=?
Hibernate: 
    select
        performanc0_.strNameQuoteOrCare as strNameQ2_1_,
        performanc0_.intClinicalFolder as intClini3_1_,
        performanc0_.intNumber as intNumber1_,
        performanc0_.intNumber as intNumber21_0_,
        performanc0_.strNameQuoteOrCare as strNameQ2_21_0_,
        performanc0_.intClinicalFolder as intClini3_21_0_,
        performanc0_.strDescription as strDescr4_21_0_ 
    from
        tblperformancecolls performanc0_ 
    where
        performanc0_.strNameQuoteOrCare=? 
        and performanc0_.intClinicalFolder=?
Hibernate: 
    update
        tblperformancecolls 
    set
        strNameQuoteOrCare=null,
        intClinicalFolder=null 
    where
        strNameQuoteOrCare=? 
        and intClinicalFolder=? 
        and intNumber=? 
        and strNameQuoteOrCare=? 
        and intClinicalFolder=?
Problem:
Because Hibernate set the following columns strNameQuoteOrCare and intClinicalFolder to null  when I have specify in the mapping class PerformanceColl  not-null=true:
    update
        tblperformancecolls 
    set
        
strNameQuoteOrCare=null,
        intClinicalFolder=null 
    where
        strNameQuoteOrCare=? 
        and intClinicalFolder=? 
        and intNumber=? 
        and strNameQuoteOrCare=? 
        and intClinicalFolder=?
Best Regards
Rino