Je rencontre des problèmes lors de la tentative d'enregistrement de CLOB dans Oracle à l'aide de Spring Data et de l'interface CRUDRepository. Du côté de la base de données, la colonne est de type CLOB. Les chaînes de caractères inférieures à 4000 caractères sont enregistrées correctement, mais plus longtemps (ORA-01461), malgré l'annotation @Lob et le paramètre de définition de colonne dans l'annotation @Column. Je n'ai pas trouvé de solution à ce problème, car tout ce que j'ai trouvé concerne Spring JDBC Template, pas Spring Data.Comment insérer CLOB à Oracle à l'aide des données de ressort
try (ByteArrayInputStream inputStream = new ByteArrayInputStream(messageBody.getBytes(StandardCharsets.UTF_8))) {
message = (DeadLetterMessage) unmarshaller.unmarshal(new StreamSource(inputStream));
}
try {
message = repository.save(message);
} catch (Throwable e) {
log.warn("### Failed to store message in database", e);
throw e;
}
Biens immobiliers à persistence.xml:
<persistence-unit name="deadletter" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<class>com.lppsa.integration.camel.dlc.entity.DeadLetterMessage</class>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
<property name="hibernate.connection.SetBigStringTryClob" value="true"/>
<property name="hibernate.jdbc.batch_size" value="true"/>
</properties>
</persistence-unit>
problème est seulement avec des valeurs plus que 4000.
(...)
@Lob
@Basic(fetch = FetchType.LAZY)
@Column(name = "MESSAGE_DATA", columnDefinition = "CLOB NOT NULL")
@XmlJavaTypeAdapter(ByteArrayXmlAdapter.class)
private byte[] messageData;
(...)
https://stackoverflow.com/questions/2115420/cannot-save-clob-data-type-in-database-struts-spring-hibernate?rq=1 -> this ne marche pas. –
Veuillez fournir un [MCVE] incluant votre code actuel. – MT0
J'utilise la méthode _save_ par défaut de l'interface CRUDRepository. –