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();