Erro Hibernate 4 Tipo de coluna inválido: getCLOB not implemented for class?

Mais um erro na migração do hibernate 3 pro hibernate 4 e empaquei nesse erro abaixo:

Tipo de coluna inválido: getCLOB not implemented for class oracle.jdbc.driver.T4CVarcharAccessor

Alguém já passou por isso e pode me ajudar?

1 curtida

Nunca.
Como está o mapeamento da entitdade em questão?

Boa noite Augusto!

@Entity
@Table(name = “TR_VEICULO”, catalog = “”, schema = “TRANSPORTE”)
@Data @AllArgsConstructor @NoArgsConstructor
public class TrVeiculo implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@SequenceGenerator(name = "SEQTR_VEICULOVEIC_CODIGO", sequenceName = "SE_TR_VEICULO_VEIC_CODIGO", allocationSize=1) 
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQTR_VEICULOVEIC_CODIGO")
@Basic(optional = false)
@Column(name = "VEIC_CODIGO")
private Long veicCodigo;

@Lob
@Column(name = “VEIC_OBSERVACAO”)
private String veicObservacao;


}

Se eu tirar o @Lob funciona,
o mais intrigante é que na versão 3 do hibernate não apresenta erro

Sempre que utilizei a anotação @Lob trabalhei em array de bytes, nunca com Strings.
Talvez seja isso.

1 curtida

No oracle este campo veicObservacao é um CLOB, por isso que coloquei como String no java
Tenho outros campos no oracle BLOB que declarei como byte[]

Mas em ambos os casos dá erro se deixar a anotação

Tem duas coisas aí, o primeiro é que @Lob atende a CLOB ou BLOB.
O segundo é que a mensagem de erro menciona o Driver oracle e não o hibernate, diretamente

Tipo de coluna inválido: getCLOB not implemented for class oracle.jdbc.driver.T4CVarcharAccessor

Está utilizando a versão mais atual do driver?

Fiz como você indicou e funcionou:

///////////////////////
@Lob
@Column(name = “campo_blob”, columnDefinition = “BLOB”)
private byte[] campoBlob;

//////////////////////
String valor = new String(entity.getCampoBlob())