Olá,
estou passando pelo seguinte problema:
no meu BD, a coluna é do tipo CLOB. No java, é do tipo String. P/ fazer o mapeamento criei uma classe (chamada TextType). Se eu coloco p/ inserir uma String pequena, funciona bacana, mas se eu coloco p/ inserir uma String grande (com aproximadamente 6200 caracteres), ele me mostra o seguinte erro:
java.sql.SQLException: operação não permitida: streams type cannot be used in batching
Minha classe textType:
public class TextType extends ImmutableType {
@Override
public Object fromStringValue(String arg0) throws HibernateException {
// TODO Auto-generated method stub
return null;
}
@Override
public String toString(Object arg0) throws HibernateException {
// TODO Auto-generated method stub
return null;
}
public Class getReturnedClass() {
// TODO Auto-generated method stub
return null;
}
public Object get(ResultSet rs, String name) throws SQLException {
String line;
String str = "";
BufferedReader b = new BufferedReader( rs.getCharacterStream( name ) );
try {
while( (line = b.readLine()) != null ) {
str += line;
}
} catch (IOException e) {
throw new SQLException( e.toString() );
}
return str;
}
public Class returnedClass() {
return String.class;
}
public void set(PreparedStatement st, Object value, int index)
throws SQLException {
StringReader r = new StringReader( (String)value );
st.setCharacterStream( index, r, ((String)value).length() );
}
public int sqlType() {
return Types.CLOB;
}
public String getName() { return "string"; }
public boolean hasNiceEquals() {
return false;
}
public boolean equals(Object x, Object y) {
return ObjectUtils.equals(x, y);
}
public String toXML(Object value) {
return (String) value;
}
}
Meu hbm.xml:
<hibernate-mapping
>
<class
name="br.inf.portalfiscal.nfe.model.FilaVO"
table="FILA_ENTRADA"
>
<id
name="identificador"
column="IDENTIFICADOR"
type="long"
unsaved-value="null"
>
<generator class="native">
<param name="sequence">SQ_FILA</param>
<!--
To add non XDoclet generator parameters, create a file named
hibernate-generator-params-FilaVO.xml
containing the additional parameters and place it in your merge dir.
-->
</generator>
</id>
<property
name="cnpj"
type="java.lang.String"
update="true"
insert="true"
column="CNPJ"
not-null="false"
unique="false"
/>
<property
name="status"
type="int"
update="true"
insert="true"
column="STATUS"
not-null="false"
unique="false"
/>
<property
name="dataHoraStatus"
type="java.util.Date"
update="true"
insert="true"
column="DATA_HORA_STATUS"
not-null="false"
unique="false"
/>
<property
name="dataHoraRecebimento"
type="java.util.Date"
update="true"
insert="true"
column="DATA_HORA_RECEBIMENTO"
not-null="false"
unique="false"
/>
<property
name="recibo"
type="long"
update="true"
insert="true"
column="RECIBO"
not-null="false"
unique="false"
/>
<property
name="xmlDados"
type="br.inf.portalfiscal.util.TextType"
update="true"
insert="true"
column="XML_DADOS"
not-null="false"
unique="false"
/>
</class>
</hibernate-mapping>
Já tentei colocar no java o atributo p/ Clob mesmo, mas o erro tbm continuou.