Komplettes Java Objekt in Datenbank ablegen

tobimat80

Grünschnabel
Hallo,

ich arbeite seit kurzem mit Hibernate und bin auf folgendes Problem gestoßen: Ich habe eine kleine Java-Bean (die nur einfache Datentypen enthält), die ich komplett in einer Datenbank ablegen will. Das klappt mit der Hilfe von Hibernate auch hervorragend - zumindest kommen keine Fehlermeldungen und in meiner postgres Datenbank ist die Bean dann als bytea abgelegt. So weit so gut. Will ich mir dann die Bean zurücknehmen, hat die dann ein NULL-Value. Hm, die Bean selbst implementiert zwar das Serializable-Interface....

? Thx

Tobias
 
Ok, du hast mal wieder Recht. Hier ist die Bean die ich als Object in der Datenbank ablegen will:

Code:
public class EncodingOptions implements Serializable {
	    
	private String audioCodec;
	private int audioBitrate;
	private String videoCodec;
	private int videoBitrate;
	private int pass;
	
	public EncodingOptions() {
	}

	public int getAudioBitrate() {
		return audioBitrate;
	}

	public void setAudioBitrate(int audioBitrate) {
		this.audioBitrate = audioBitrate;
	}

	public int getVideoBitrate() {
		return videoBitrate;
	}

	public void setVideoBitrate(int videoBitrate) {
		this.videoBitrate = videoBitrate;
	}

	public int getPass() {
		return pass;
	}

	public void setPass(int pass) {
		this.pass = pass;
	}
	
	public void setAudioCodec(String audioCodec) {
		this.audioCodec = audioCodec;
	}

	public String getAudioCodec() {
		return audioCodec;
	}

	public void setVideoCodec(String videoCodec) {
		this.videoCodec = videoCodec;
	}

	public String getVideoCodec() {
		return videoCodec;
	}

	@Override
	public String toString() {
		return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
        .append("audio_codec", this.audioCodec)
        .append("audio_bit_rate", this.audioBitrate)
        .append("video_codec", this.videoCodec)
        .append("video_bit_rate", this.videoBitrate)
        .append("pass", this.pass).toString();
	}

}

So ist die engebettet:
Code:
...
	@Column(name = "encoding")
	public EncodingOptions getEncodingOptions() {
		return encOpts;
	}

	public void setEncodingOptions(EncodingOptions encOpts) {
		this.encOpts = encOpts;
	}
...

Ich bekomme eine Nullpointer-Exception wenn ich auf die Bean zugreifen will, nachdem ich sie wieder von der DB bekommen hab
 
Ok, habs nun verstanden. Danke für den Wink-Mit-Dem-Zaunfahl. Das war das Zeichen für den Feierabend :)


EDIT: Ok, nur zur Info. Mein Problem war hausgemachter Art - (ich habe dummerweise eine Setter-Methode vergessen... ) Was das speichern von Java - Objekten als solches angeht: Es ist nicht zwingend eine Entity oder Embeddable Annotation notwendig. Wenn das Objekt javaio.serializable Interface implementiert, übernimmt Hibernate die Persistierung 'von selbst'. Was auch eine Möglichkeit wäre, ist die @LOB Annotation - dadurch wir das Objekt ganz 'einfach' als BLOB gespeichert.
 
Zuletzt bearbeitet:
Zurück