After consulting the ojb documentation and the mailing list archives I
think that I do everything the right way, but I still cannot query a table
with a blob...

I get the following exception:

org.apache.ojb.broker.metadata.MetadataException: IllegalAccess error
setting field:datei in object:ch.admin.bit.tabakbier.dto.Dateien

[PersistentField] ERROR: while set field:
[try to set 'object value' in 'target object'
target obj class: ch.admin.bit.tabakbier.dto.Dateien
target field name: datei
target field type: interface java.sql.Blob
object value class: [B
object value: [EMAIL PROTECTED]
]

repository.xml:
<class-descriptor
        class="ch.admin.bit.tabakbier.dto.Dateien"
        table="DATEIEN"
        >
        <field-descriptor id="1"
                name="id"
                column="ID"
                jdbc-type="BIGINT"
                primarykey="true"
        />
        <field-descriptor id="2"
                name="datei"
                column="DATEI"
                jdbc-type="BLOB"
        />
        <insert-procedure name="ojb$DATN.ins">
                <runtime-argument field-ref="id" return="true"/>
                <runtime-argument field-ref="datei" return="true"/>
        </insert-procedure>
        <update-procedure name="ojb$DATN.upd">
                <runtime-argument field-ref="id" return="true"/>
                <runtime-argument field-ref="datei" return="true"/>
        </update-procedure>
        <delete-procedure name="ojb$DATN.del">
                <runtime-argument field-ref="id"/>
        </delete-procedure>
</class-descriptor>

I have attached the file Dateien.java.

Using ojb 1.0.1 with the Oracle 9 JDBC thin driver.

Any help is highly appreciated!

Thank you very much and best regards,
Chris
// Generated by EzaMeta Generator 
// 2005-09-30 17:20:52 

package ch.admin.bit.tabakbier.dto;

import ch.admin.bit.fw.common.IValueObject;
import ch.admin.bit.ezameta.persistence.ISmartDto;

public class Dateien  implements ISmartDto {

	private long id;
	private java.sql.Blob datei;		

	
	private boolean dirtyIndicator = false;
	private boolean dirtyTracking = true;

	/**
	 * Returns true if the object does already exist in the database.
	 * Checks the primary key value.
	 */
	public boolean isPersistent() {
		return (id != 0);
	}
    
	/**
	 * Returns true if the DTO tracks its dirty state.
	 */
	public boolean tracksDirtyState() {
		return dirtyTracking;
	}
	/**
	 * Enable the DTO to track its dirty state.
	 */
	public void enableDirtyTracking() {
		dirtyTracking = true;
	}
	/**
	 * Disable the DTO to track its dirty state.
	 */
	public void disableDirtyTracking() {
		dirtyTracking = false;
	}
	/**
	 * Returns true if the DTO is dirty.
	 */
	public boolean isDirty() {
		return dirtyIndicator;
	}
	/**
	 * Set the state of the DTO to dirty.
	 */
	public void setDirty() {
		dirtyIndicator = true;
	}
	/**
	 * Set the state of the DTO to clean.
	 */
	public void setClean() {
		dirtyIndicator = false;
	}

	public long getId(){
		return this.id;
	}
   	private void setId( long param ){
		this.id = param;
		if (dirtyTracking) dirtyIndicator = true;
	}
	public java.sql.Blob getDatei(){
		return this.datei;
	}
   	public void setDatei( java.sql.Blob param ){
		this.datei = param;
		if (dirtyTracking) dirtyIndicator = true;
	}


	public String toString(){
		return  " [id] " + id
		 + " [datei] " + datei
		 + " [dirtyIndicator] " + dirtyIndicator
		
		;
	}

	public IValueObject copy(IValueObject vo){
		Dateien tmp = ( Dateien ) vo;
		if(vo==null) return this;
		setId(tmp.getId());
		setDatei(tmp.getDatei());

		// this is how DTOs are instantiated - set dirty to false
		dirtyIndicator = false;
		return this;
	}
	public boolean equalsByAttributes(IValueObject dto) {
		if (dto instanceof Dateien) {
			Dateien realdto = (Dateien) dto;
			return (
					getId() == realdto.getId() &&
					(getDatei() == null && realdto.getDatei() == null || getDatei() != null && getDatei().equals(realdto.getDatei()) || realdto.getDatei() != null && realdto.getDatei().equals(getDatei())) 
				);
		} else {
			return false;
		}
	}


}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to