web-dev-qa-db-fra.com

Comment une colonne blob est-elle annotée dans Hibernate?

Comment une colonne blob est-elle annotée dans Hibernate? Jusqu'à présent, j'ai une classe qui a:

@Column( name = "FILEIMAGE" )
private byte[ ] fileimage ;
//
public byte[ ] getFileimage ( ) { return this.fileimage ; }
public void setFilename ( String filename ) { this.filename = filename ; }
32
quinn

@Lob devrait faire l'affaire pour blob et clob (utilisez String comme type)

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

J'ai utilisé hibernate 4 dans JBoss 7 et Java 7, et j'ai découvert que la colonne BLOB dans ma table ne fonctionne pas comme ce que j'ai pour hibernate 2. Heureusement, j'ai résolu en lisant les solutions des autres. Ma solution:

  1. Table en db, la colonne toujours définie dans BLOB; changer le mappage de mise en veille prolongée de type="blob" en type="binary"
  2. Dans Java getter/setter, en utilisant byte[] Au lieu de BLOB (javax.sql)
  3. Modifiez le code Java qui récupère et définit correctement cette colonne. Si vous utilisez InputStram, utilisez byte[] Pour lire/écrire dans la colonne BLOB; si vous lisez à partir de la base de données en utilisant Java.sql.ResultSet, assurez-vous d'utiliser la méthode getBytes () au lieu de la méthode getBlob().
2
Mingwei Wu