Hello,
I have the following problem: I have an 1:1-aggregation between an 
Address-object and a corresponding ZIPCode-Object. I don't want to
map addresses and zipcodes to different DB tables but store the zipcode
as a column in the address-table. 

The problem is, when I want to store an Address-Object containing an 
instance of ZIPCode by calling broker.store(address), I get the following
error:


        java.lang.NoSuchFieldException: m_userRsetType
        at java.lang.Class.getField0(Class.java:1735)
        at java.lang.Class.getDeclaredField(Class.java:1189)
        at
org.apache.ojb.broker.platforms.PlatformOracleImpl.changePreparedStatementRe
sultSetType(Unknown Source)
        at
org.apache.ojb.broker.platforms.PlatformOracleImpl.setObjectForStatement(Unk
nown Source)
        at
org.apache.ojb.broker.accesslayer.StatementManager.bindInsert(Unknown
Source)
        at
org.apache.ojb.broker.accesslayer.JdbcAccess.executeInsert(Unknown Source)
        at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.store(Unknown Source)
        at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.store(Unknown Source)
        at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.storeCollectionObject(U
nknown Source)
        at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.storeCollections(Unknow
n Source)
        at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.store(Unknown Source)
        at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.store(Unknown Source)
        at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.store(Unknown Source)
        at test.MainAppl.insertData(MainAppl.java:172)
        at test.MainAppl.main(MainAppl.java:46)
[org.apache.ojb.broker.accesslayer.JdbcAccess] ERROR:
PersistenceBrokerException during the execution of materializeObject: Not in
GZIP format
Not in GZIP format
java.io.IOException: Not in GZIP format
        at
java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:131)
        at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:58)
        at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:68)
        at
org.apache.ojb.broker.accesslayer.conversions.Object2ByteArrFieldConversion.
sqlToJava(Unknown Source)
        at
org.apache.ojb.broker.accesslayer.RowReaderDefaultImpl.readObjectArrayFrom(U
nknown Source)
        at
org.apache.ojb.broker.accesslayer.JdbcAccess.materializeObject(Unknown
Source)
        at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.store(Unknown Source)
        at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.storeCollectionObject(U
nknown Source)
        at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.storeCollections(Unknow
n Source)
        at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.store(Unknown Source)
        at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.store(Unknown Source)
        at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.store(Unknown Source)
        at test.MainAppl.insertData(MainAppl.java:172)
        at test.MainAppl.main(MainAppl.java:46)



What am I doing wrong (in the mapping)? I also tried VARCHAR and LONGVARCHAR
as JDBC-column-types,
but nothing works the way I think it should work. I also tried to use
JAVA_OBJECT as JDBC-columntype,
but it didn't work either. It worked when I simply chose an int as zipcode
and not a Java class.
Thanx for your help,

Jan Geiger




Below is the sourcecode and the mapping-info I used:
 
// ZIPCode class
public class ZIPCode implements java.io.Serializable {
        int code;
        String additionalField;
        
        public ZIPCode (int pCode, String pAdditionalField) {
          this.setCode(pCode);
          this.setAdditionalField(pAdditionalField);
        }
        
        public String getAdditionalField() {
                return additionalField;
        }

        public int getCode() {
                return code;
        }

        public void setAdditionalField(String additionalField) {
                this.additionalField = additionalField;
        }

        public void setCode(int code) {
                this.code = code;
        }

}

// extract from Address class
public class Address {
  ...
  private ZIPCode zipCode;
  ...


public ZIPCode getZipCode() {
        return zipCode;
}

public void setZipCode(ZIPCode zipCode) {
        this.zipCode = zipCode;
}


// extract from the class-descriptor of Address
   <class-descriptor
          class="test.Address"
          table="TADDRESS">
          
       ...
      

          <field-descriptor id="5"
         name="zipCode"
         column="ZIPCODE"
         jdbc-type="LONGVARBINARY"
 
conversion="org.apache.ojb.broker.accesslayer.conversions.Object2ByteArrFiel
dConversion"
      />
  </class-descriptor>

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to