【问题标题】:Hibernate error with query "FOR XML PATH"查询“FOR XML PATH”时出现休眠错误
【发布时间】:2018-06-15 21:27:37
【问题描述】:

我需要帮助

我在我的项目上使用 Spring Boot、JPA 存储库和 DB 是 SQL Server 2012;我所有的存储库都运行良好,但我在执行下一个查询时遇到了问题:

@Query(value = "SELECT A_DOCUMENT FROM DOCUMENT WHERE C_DOCUMENT = ?1 FOR XML PATH('')", nativeQuery = true)
List<Object[]> findAdocumentByCdocument(Integer cdocument);

我得到下一个错误:

org.hibernate.MappingException:没有 JDBC 类型的方言映射:-16 在 org.hibernate.dialect.TypeNames.get(TypeNames.java:70) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] 在 org.hibernate.dialect.TypeNames.get(TypeNames.java:101) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] 在 org.hibernate.dialect.Dialect.getHibernateTypeName(Dialect.java:666) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] 在 org.hibernate.loader.custom.JdbcResultMetadata.getHibernateType(JdbcResultMetadata.java:77) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] 在 org.hibernate.loader.custom.ScalarResultColumnProcessor.performDiscovery(ScalarResultColumnProcessor.java:45) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] 在 org.hibernate.loader.custom.CustomLoader.autoDiscoverTypes(CustomLoader.java:487) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] 在 org.hibernate.loader.Loader.getResultSet(Loader.java:2125) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]

知道如何在 JPA 上执行此查询吗?

谢谢

【问题讨论】:

  • 你试过List&lt;String&gt;吗?
  • @Saravana 是的,但我得到了同样的错误,我更新了我的问题,但有例外
  • @Miike 查询返回什么,您可以发布示例数据吗?
  • 返回一个临时xml,数据太长放不下,长度为:88516;在 sql server 控制台上它可以工作,但使用 jpa 我得到了异常
  • 您可以尝试转换为文本CAST(A_DOCUMENT as text) 吗?

标签: java spring hibernate jpa


【解决方案1】:

由于返回类型未注册到Hibernate,我们得到了一个异常,所以尝试CAST你的结果到text

@Query(value = "SELECT CAST(A_DOCUMENT AS text) FROM DOCUMENT WHERE C_DOCUMENT = ?1 FOR XML PATH('')",
     nativeQuery = true)
List<String> findAdocumentByCdocument(Integer cdocument);    

【讨论】:

  • 我尝试了你的解决方案,但我得到了同样的错误,我认为问题是 JDBC 没有将我的查询映射到 SQLServer2012Dialect。 A_DOCUMENT 字段为 VARCHAR(MAX) 且该字段的内容超出了正常 SELECT 的限制
  • 尝试将其更改为 clob 或优化输出,预计一列中大约有 85k
  • 他在谈论“FOR XML PATH”而不是返回类型问题!!
猜你喜欢
  • 2023-04-05
  • 2012-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-10
相关资源
最近更新 更多