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

6 respostas
hibernatejavaoracle
G

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?

6 Respostas

L

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

G

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;

<a class="mention" href="/u/lob">@Lob</a>

@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

L

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

G

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

L

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?

M

Fiz como você indicou e funcionou:

///////////////////////

<a class="mention" href="/u/lob">@Lob</a>

@Column(name = “campo_blob”, columnDefinition = “BLOB”)

private byte[] campoBlob;

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

Criado 16 de março de 2017
Ultima resposta 16 de set. de 2020
Respostas 6
Participantes 3