You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by Felix Janssen <th...@mayaxatl.org> on 2003/03/04 01:27:07 UTC

error storing null value in not null field..

Hello

I'm experiencing a very strange problem with ojb 0.9.9 and PostgreSQL. I'm
having this exception:

java.sql.SQLException: ERROR:  ExecAppend: Fail to add null value in not null attribute member_id
        at org.postgresql.core.QueryExecutor.execute(QueryExecutor.java:94)
        at org.postgresql.Connection.ExecSQL(Connection.java:398)
        at org.postgresql.jdbc2.Statement.execute(Statement.java:130)
        at org.postgresql.jdbc2.Statement.executeUpdate(Statement.java:73)
        at org.postgresql.jdbc2.PreparedStatement.executeUpdate(PreparedStatement.java:113)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:205)
        at org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeInsert(JdbcAccessImpl.java:199)
        at org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.storeToDb(PersistenceBrokerImpl.java:1742)
        at org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.store(PersistenceBrokerImpl.java:1683)
        at org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.store(PersistenceBrokerImpl.java:632)
        at org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.store(DelegatingPersistenceBroker.java:151)
        at org.mayaxatl.db.PersistenceManager_OJB.store(PersistenceManager_OJB.java:36)


But just before the broker.store(subscr) is called, my logs show:

subscr.getMemberId() = 562

So i'm storing an object with a certain property set to a not null value, but
somehow in the store process, the value gets lost.

Anyone an idea?

thanks in advance!

Felix

repository_user.xml:
-----
<class-descriptor class="org.mayaxatl.db.Member" table="MEMBERS">

  <field-descriptor id="1"
    name="id"
    column="ID"
    jdbc-type="INTEGER"
    primarykey="true"
    autoincrement="true"
  />

  <field-descriptor id="2"
    name="name"
    column="NAME"
    jdbc-type="VARCHAR"
  />

  <field-descriptor id="3"
    name="createdOn"
    column="CREATED_ON"
    jdbc-type="TIMESTAMP"
  />
    
  <field-descriptor id="4"
    name="lastModifiedOn" 
    column="LAST_MODIFIED_ON"
    jdbc-type="TIMESTAMP"
  />

  <field-descriptor id="5"
    name="nieuw"
    column="NIEUW"
    jdbc-type="BIT"
  />

  <field-descriptor id="6"
    name="email"
    column="EMAIL"
    jdbc-type="VARCHAR"
  />

  <field-descriptor id="7"
    name="phone"
    column="PHONE"
    jdbc-type="VARCHAR"
  />

  <field-descriptor id="8"
    name="mobile"
    column="MOBILE"
    jdbc-type="VARCHAR"
  />

  <field-descriptor id="9"
    name="address"
    column="ADDRESS"
    jdbc-type="VARCHAR"
  />

  <field-descriptor id="10"
    name="zip"
    column="ZIP"
    jdbc-type="VARCHAR"
  />

  <field-descriptor id="11"
    name="city"
    column="CITY"
    jdbc-type="VARCHAR"
  />

  <collection-descriptor
    name="subscriptions"
    element-class-ref="org.mayaxatl.db.Subscription"
    orderBy="createdOn"
    sort="ASC"
    refresh="true"
    auto-retrieve="true"
  >
    <inverse-foreignkey field-id-ref="2" />
  </collection-descriptor>

</class-descriptor>

<class-descriptor class="org.mayaxatl.db.Subscription" table="SUBSCRIPTIONS">

  <field-descriptor id="1"
    name="id"
    column="ID"
    jdbc-type="INTEGER"
    primarykey="true"
    autoincrement="true"
  />

  <field-descriptor id="2"
    name="memberId"
    column="MEMBER_ID"
    jdbc-type="INTEGER"
  />

  <field-descriptor id="3"
    name="createdOn"      
    column="CREATED_ON"
    jdbc-type="TIMESTAMP"
  />
    
  <field-descriptor id="4"
    name="lastModifiedOn" 
    column="LAST_MODIFIED_ON"
    jdbc-type="TIMESTAMP"
  />
    
  <field-descriptor id="5"
    name="week"            
    column="WEEK"
    jdbc-type="INTEGER"
  />
    
  <field-descriptor id="6"
    name="kok"             
    column="KOK"
    jdbc-type="BIT"
  />
    
  <field-descriptor id="7"
    name="ad"           
    column="AD"         
    jdbc-type="BIT"
  />
              
  <field-descriptor id="8"
    name="hl"           
    column="HL"
    jdbc-type="BIT"
  />

  <field-descriptor id="9"
    name="gl"
    column="GL"
    jdbc-type="BIT"
  />
             
               
  <reference-descriptor
    name="member"    
    class-ref="org.mayaxatl.db.Member"
  > 
    <foreignkey field-id-ref="2" />
  </reference-descriptor> 
                   
</class-descriptor>   


code:
--------

Subscription subscr = new Subscription(); //prepopulated by struts

log.debug ("subscr.getMemberId() = " + subscr.getMemberId()); //logs show value

broker.beginTransaction(); //broker alreasy initialized of course
broker.store (subscr);
broker.andTransaction();