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 Michael Schua <mi...@t-online.de> on 2003/06/03 13:20:32 UTC
NullPointerException while persisting
Hello Ladies and Gentlemen,
I need your help please.
Storing the following data structures to the data base keeps ending up in a
NullPointerException no matter what I try.
BenutzerBO <- m:n -> PrivilegeBO - 1:n -> ActionBO
My configuration:
OJB 1.1 rc3.
MySQL 3.23.52 (as shipped with Suse-Linux 8.1)
Java 1.4.1
Stack-Tace:
[org.apache.ojb.odmg.ObjectEnvelopeTable] ERROR: Commit on object level
failed for tx org.apache.ojb.odmg.TransactionImpl@d42d08
null
java.lang.NullPointerException
at
org.apache.ojb.broker.metadata.FieldDescriptor.getJdbcType(FieldDescriptor.j
ava:210)
at
org.apache.ojb.broker.metadata.FieldDescriptor.getColumnJdbcType(FieldDescri
ptor.java:194)
at
org.apache.ojb.broker.util.SqlHelper.getSqlTypeRwAll(SqlHelper.java:480)
at
org.apache.ojb.broker.accesslayer.StatementManager.bindInsert(StatementManag
er.java:492)
at
org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeInsert(JdbcAccessImp
l.java:198)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.storeToDb(PersistenceBroker
Impl.java:1926)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBrokerImpl
.java:1841)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBrokerImpl
.java:1799)
at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(DelegatingPersi
stenceBroker.java:163)
at
org.apache.ojb.odmg.states.StateNewDirty.commit(StateNewDirty.java:148)
at
org.apache.ojb.odmg.ObjectEnvelopeTable.commitAllEnvelopes(ObjectEnvelopeTab
le.java:234)
at
org.apache.ojb.odmg.ObjectEnvelopeTable.commit(ObjectEnvelopeTable.java:189)
at
org.apache.ojb.odmg.TransactionImpl.doCommitOnObjects(TransactionImpl.java:3
42)
at
org.apache.ojb.odmg.TransactionImpl.prepare(TransactionImpl.java:595)
at
org.apache.ojb.odmg.TransactionImpl.commit(TransactionImpl.java:545)
at Main.main(Main.java:83)
[org.apache.ojb.odmg.TransactionImpl] ERROR: Could not prepare for commit:
null
repository_user.xml:
<class-descriptor
class="BusinessObjects.PrivilegeBO"
table="PRIVILEGEBO">
<field-descriptor
name="id"
column="ID"
jdbc-type="INTEGER"
primarykey="true"
autoincrement="true"
/>
<field-descriptor
name="beschreibung"
column="BESCHREIBUNG"
jdbc-type="VARCHAR"
/>
<field-descriptor
name="privilegeName"
column="PRIVILEGENAME"
jdbc-type="VARCHAR"
/>
<collection-descriptor
name="actions"
element-class-ref="BusinessObjects.ActionBO"
auto-retrieve="true"
auto-update="false"
auto-delete="false">
<inverse-foreignkey field-ref="fid"/>
</collection-descriptor>
<collection-descriptor
name="members"
element-class-ref="BusinessObjects.BenutzerBO"
auto-retrieve="true"
auto-update="false"
auto-delete="false"
indirection-table="BENUTZERBOPRIVILEGEBO">
<fk-pointing-to-this-class column="PRIVILEGEBO_ID"/>
<fk-pointing-to-element-class column="BENUTZERBO_ID"/>
</collection-descriptor>
</class-descriptor>
<class-descriptor
class="BusinessObjects.BenutzerBO"
table="BENUTZERBO">
<field-descriptor
name="id"
column="ID"
jdbc-type="INTEGER"
primarykey="true"
autoincrement="true"
/>
<field-descriptor
name="beschreibung"
column="BESCHREIBUNG"
jdbc-type="VARCHAR"
/>
<field-descriptor
name="vorName"
column="VORNAME"
jdbc-type="VARCHAR"
/>
<field-descriptor
name="nachName"
column="NACHNAME"
jdbc-type="VARCHAR"
/>
<field-descriptor
name="userName"
column="USERNAME"
jdbc-type="VARCHAR"
/>
<field-descriptor
name="emAddr"
column="EMADDR"
jdbc-type="VARCHAR"
/>
<field-descriptor
name="passWD"
column="PASSWD"
jdbc-type="VARCHAR"
/>
<collection-descriptor
name="privileges"
auto-retrieve="true"
auto-update="false"
auto-delete="false"
element-class-ref="BusinessObjects.PrivilegeBO"
indirection-table="BENUTZERBOPRIVILEGEBO">
<fk-pointing-to-this-class column="BENUTZERBO_ID"/>
<fk-pointing-to-element-class column="PRIVILEGEBO_ID"/>
</collection-descriptor>
</class-descriptor>
<class-descriptor
class="BusinessObjects.ActionBO"
table="ACTIONBO"
>
<field-descriptor
name="id"
column="ID"
jdbc-type="INTEGER"
primarykey="true"
autoincrement="true"
/>
<field-descriptor
name="beschreibung"
column="BESCHREIBUNG"
jdbc-type="VARCHAR"
/>
<field-descriptor
name="name"
column="NAME"
jdbc-type="VARCHAR"
/>
<field-descriptor
name="description"
column="DESCRIPTION"
jdbc-tpye="VARCHAR"
/>
<field-descriptor
name="fid"
column="FID"
jdbc-type="INTEGER"
/>
<field-descriptor
name="label"
column="LABEL"
jdbc-type="VARCHAR"
/>
</class-descriptor>
What the heck is wrong here. Or am I running into a bug.
Many thanks in advance for your comments.