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.