-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 
Author Message
 Post subject: LOB
PostPosted: Tue Jun 09, 2009 4:01 am 
Regular
Regular

Joined: Tue Jun 03, 2008 1:12 pm
Posts: 84
Location: germany
Ich nutze die LOB-Annotation um binäre Daten zu persistieren und habe 2 Alternativen:

1: byte[]

Code:
private byte[] data;
@Lob
@Column(name = "DATA", length = 2147483647)
@Basic(fetch = FetchType.LAZY)
//getter/setter



2. java.sql.BLOB:

Code:
private Blob data;
@Lob
@Column(name = "DATA")
//getter/setter



Alternative 1 funktioniert nur dann, wenn ich die Länge z.B. auf
length = 214748 verkürze. Geb ich jedoch den maximalen Integer-Wert an, so scheitert es bereits bei der Erstellung der Tabelle:

Code:
Unsuccessful: create table MYDATAS (ID_DATA integer not null, DATA blob(2147483646), primary key (ID_DATA), unique (ID_DATA))
09:57:16,546 ERROR [SchemaExport] DB2 SQL Error: SQLCODE=-355, SQLSTATE=42993, SQLERRMC=DATA, DRIVER=3.50.152
09:57:16,750 ERROR [SchemaExport] Unsuccessful: create index IDX_ID_DATA on MYDATAS (ID_DATA)
09:57:16,750 ERROR [SchemaExport] DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=MYDATAS , DRIVER=3.50.152


Jedoch will ich die maximale Länge für mein byte-Array ausnutzen.
Ich nutze DB2 und die maximale Länge für BLOB's sind 2GB (d.h. 2147483646 wäre eigentlich erlaubt).
Gebe ich keine length an, so erstellt Hibernate per default mein Blob-Feld mit einer Länge von 255 (viel zu wenig!). Wie kann ich das lösen?

Oder sollte ich doch besser gleich Alternative 2 nutzen?


Top
 Profile  
 
 Post subject: Re: LOB
PostPosted: Tue Jul 07, 2009 12:49 pm 
Regular
Regular

Joined: Thu Apr 14, 2005 10:39 am
Posts: 115
Hi,

Lazy-Fetching von Attributen kannst Du ohne ByteCodeInstrumentation (siehe Doku) eh vergessen.

Würde BLob verwenden.

Falls das nicht funktioniert, wie bei mir unter postgreSql, kann man auch
Code:
@Type(type = "org.hibernate.type.BinaryType")
    private byte[] array;
verwenden.


Viele Grüße Michael


Top
 Profile  
 
 Post subject: Re: LOB
PostPosted: Thu Jul 09, 2009 9:23 am 
Regular
Regular

Joined: Thu Apr 14, 2005 10:39 am
Posts: 115
Hallo ansonsten, erziel ich den gewünschten Effekt auch ohne jegliche Annotation.


Quote:
@Column(name = "DATA", length = 2147483647)


Kann nicht funktionieren, da nur für Strings zulässig.
Quote:
length

public abstract int length

(Optional) The column length. (Applies only if a string-valued column is used.)

Default:
255


https://www.hibernate.org/hib_docs/ejb3-api/javax/persistence/Column.html

Viele Grüße Michael


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.