2009-06-02 10 views

Odpowiedz

43

@Lob powinno wystarczyć dla blob i CLOB (zastosowanie jako typ String)

@Column(name = "FILEIMAGE") 
@Lob(type = LobType.BLOB) 
private byte[] fileimage; 
+40

zależnie od wersji hibernacji, adnotacja Lob może nie mieć parametru typu. cytat z [tutaj] (https://www.hibernate.org/398.html): @Lob nie ma już atrybutów, typ lob (CLOB, BLOB) jest odgadywany. Jeśli podstawowym typem jest ciąg lub tablica znaków, używane są CLOB. Stosowane są inne obiekty BLOB. – Fortega

+0

dzięki chłopaki za szybkie odpowiedzi. czy kolejność jest ważna? @Column (name = "FILEIMAGE", length = 1048576) @Lob private byte [] fileimage; –

+0

@Fortega, podany link nie działa. – gtiwari333

1

użyłem hibernacji 4 w JBoss 7 i Java 7 i dowiedziałem się, że kolumna BLOB w moim stole nie działa tak, jak w przypadku hibernacji 2. Na szczęście rozwiązałem ją, czytając rozwiązania innych osób. Moje rozwiązanie:

  1. Tabela w db, kolumna nadal zdefiniowana w BLOB; zmienić mapowanie hibernacji z type="blob" do type="binary"
  2. w Javie getter/setter, używając byte[] zamiast BLOB (javax.sql)
  3. Zmiana kodu Java, które pobrać i ustawić tę kolumnę prawidłowo. Jeśli włączasz InputStram, użyj byte[] do odczytu/zapisu do kolumny BLOB; Jeśli czytasz z DB używając java.sql.ResultSet, upewnij się, że używaj metody getBytes() zamiast metody getBlob().
Powiązane problemy