我嘗試使用Spring Data和CRUDRepository接口將CLOB保存到Oracle時出現問題。在數據庫方面,列是CLOB類型的。儘管@Column註釋中的@Lob批註和列定義參數儘管保存正確,但長度不超過4000個字符的字符串 - 不是(ORA-01461)。我找不到這個問題的解決方案,因爲我發現的所有內容都與Spring JDBC模板有關,而不是Spring Data。如何使用Spring數據將CLOB插入到Oracle
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;
}
屬性在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>
問題只與價值超過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不起作用。 –
請提供包含您當前代碼的[MCVE]。 – MT0
我使用CRUDRepository接口的默認_save_方法。 –