我在 oracle 19 資料庫中有一個帶有 clob 的表,我嘗試使用@Query帶有來自 Spring boot 2.7.4 應用程式的投影的注釋通過本機查詢來獲取該表。我收到以下錯誤訊息:
java.lang.UnsupportedOperationException: Cannot project jdk.proxy2.$Proxy281 implementing java.sql.Clob,org.hibernate.engine.jdbc.WrappedClob,java.io.Serializable to java.lang.String; Target type is not an interface and no matching Converter found
來自我的存盤庫類的查詢:
@Query(
value = """
select submission_id as "submissionId", text as "textAnswer"
from answer
where answer_id = :answerId
""",
nativeQuery = true)
public MyDTO findDTO(Long answerId);
我用于投影的界面:
public interface MyDTO {
String getTextAnswer();
}
從我的域物件注釋@Entity:
private String textAnswer;
我的測驗用例重現了這個錯誤。如果我用它注釋掉a.getTextAnswer()它運行正常。
@Test
public void findFormPublishedAnswersInterfaceDTOById() {
FormPublishedAnswersInterfaceDTO a = answerRepository.findFormPublishedAnswersInterfaceDTOById(21540241L);
assertEquals("test", a.getTextAnswer());
}
我嘗試了在谷歌的幫助下找到的不同提示:)比如private String textAnswer用注釋@Lob,@Type(type = "text")但@Column(name = "text", columnDefinition = "CLOB")沒有任何運氣。
uj5u.com熱心網友回復:
如果您仔細閱讀例外,您應該了解 JDBC 驅動程式報告型別為 a Clob,因此您的 DTO 必須如下所示:
public interface MyDTO {
Clob getTextAnswer();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/516954.html
