【发布时间】:2021-05-15 04:13:26
【问题描述】:
@Query(nativeQuery = true, value = "SELECT *\n" +
"FROM TDED_VISITS v \n" +
"WHERE v.v_collected_data.assigneeId = ?")
List<Visit> findAllByAssigneeId(String assigneeId);
以上代码用于存储库中,查询的目的是返回所有与提供的值具有匹配值的“访问”。此值是 Oracle 数据库中 CLOB 中 JSON 对象内部的单个值,如下所示。
{"visitId" : 1, "assigneeId" : "agr512"}
模型是用下面的关联字段制作的。
@Column(name = "V_COLLECTED_DATA")
@Lob
private String visitJsonString;
日志中的错误如下
Column "V.V_COLLECTED_DATA.ASSIGNEEID" not found; SQL statement:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: could not prepare statement; SQL [SELECT *
FROM TDED_VISITS v
WHERE v.v_collected_data.assigneeId = ?]; nested exception is org.hibernate.exception.SQLGrammarException: could not prepare statement
也尝试了下面的 SQL 查询,但给出了找不到函数 JSON_VALUE 的错误。
@Query(nativeQuery = true, value = "SELECT *\n" +
"FROM TDED_VISITS v \n" +
"WHERE JSON_VALUE(V_COLLECTED_DATA, '$.assigneeId') = ?")
Caused by: org.springframework.orm.jpa.JpaSystemException: could not prepare statement; nested exception is org.hibernate.exception.GenericJDBCException: could not prepare statement
花了几天时间为其他人寻找类似的问题,但无济于事。如果有人可以提供帮助,谢谢!
【问题讨论】:
标签: oracle spring-boot hibernate integration-testing h2